Überladen von Methoden, auch bekannt als Funktionsüberladen oder Kompilierzeit-Polymorphismus, ist ein Konzept, bei dem zwei oder mehr Methoden mit demselben Namen, aber unterschiedlicher Signatur im selben Gültigkeitsbereich vorliegen. Es gibt viele Programmiersprachen, die diese Funktion unterstützen: Ada, C ++, C #, D und Java.
Beispiel für das Überladen von Methoden in C #
Klasse OverloadShapes {float Polygon (int radius, float pi) {float circleArea = pi * radius * radius; } int Polygon (int length, int width) {int rechteckleArea = Länge * Breite; } int Polygon (int side) {int squareArea = Seite * Seite; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | Klasse OverloadShapes {float Polygon (int radius, float pi) {float circleArea = pi * radius * radius; } int Polygon (int length, int width) {int rechteckleArea = Länge * Breite; } int Polygon (int side) {int squareArea = Seite * Seite; }} |
Wie im obigen Beispiel gezeigt, wird die Methode 'Polygon' dreimal mit unterschiedlicher Methodensignatur überladen, dh der Typ oder die Anzahl der Parameter sind unterschiedlich.
Überschreiben der Methode
Das Überschreiben von Methoden, auch als Funktion überschreiben oder Laufzeitpolymorphismus bezeichnet, ist eine OOP-Funktion, mit der eine untergeordnete Klasse der in der übergeordneten Klasse definierten Methode eine eigene Implementierung bereitstellen kann. Die Implementierung in der untergeordneten Klasse überschreibt die Definition der Methode in der Basisklasse, vorausgesetzt, die Methode in der untergeordneten Klasse sollte denselben Namen, dieselbe Signatur und denselben Rückgabetyp haben.
Beispiel für das Überschreiben von Methoden in C #
class Source1 {public void draw () {Console.Writeline ("Ich bin in der Klasse Source1"); }} class Source2 erweitert Source1 {public void draw () {Console.Writeline ("Ich bin in der Klasse Source2"); }}1 2 3 4 5 6 7 8 9 10 | Klasse Source1 {public void draw () {Konsole. Writeline ("Ich gehöre zur Klasse Source1"); }} Klasse Source2 erweitert Source1 {public void draw () {Console. Writeline ("Ich gehöre zur Klasse Source2"); }} |
Hier überschreibt die Draw-Methode in der Source2-Klasse die in der Source1-Klasse definierte Draw-Methode.
Unterschied zwischen Method Overloading und Method Overriding
- In Methode müssen Überladungsmethoden eine andere Signatur haben. In der Methode müssen überschreibende Methoden dieselbe Signatur haben.
- Funktionsüberladung besteht darin, mehr zum Verhalten der Methode hinzuzufügen oder zu erweitern. Das Überschreiben von Funktionen besteht darin, das Verhalten einer Methode vollständig zu „ändern“ oder neu zu definieren.
- Überladen der Methode wird verwendet, um den Polymorphismus der Kompilierzeit zu erreichen. Das Überschreiben der Methode wird verwendet, um einen Laufzeit-Polymorphismus zu erreichen.
- In Methoden- / Funktionsüberladung weiß der Compiler, welches Objekt welcher Klasse zum Zeitpunkt der Kompilierung zugewiesen wurde. In der Methodenüberschreibung sind diese Informationen jedoch erst zur Laufzeit bekannt.
- Das Überladen von Funktionen findet in derselben Klasse statt, während das Überschreiben in einer von einer Basisklasse abgeleiteten Klasse stattfindet.