2010-08-30 11 views
7

Was ist der Unterschied zwischen Überlastung durch den Bediener und Übersteuerung durch den Bediener?Überlastung und Übersteuerung des Bedieners in Java

Sind sie in Vererbungs- und Konsolenprogramm identisch?

+6

* ist sie gleich in Vererbung und Konsolenprogramm *: Dieser Satz ist sehr unklar. –

Antwort

9

Sie können Operatoren in Java nicht überschreiben (überladen).

In einigen anderen Sprachen kann der Unterschied zwischen dem Überladen und Überschreiben von Operatoren der gleiche wie zwischen Überladen und Überschreiben von Funktionen sein. Z.B. In Scala sind Operatoren nur Funktionen.

+1

Um die Scala-Anweisung zu quantifizieren, erlaubt Scala symbolische Methodennamen. Deshalb ist + ein gültiger Methodenname, sogar ++ - * könnte definiert werden. – gpampara

1

In Java wird kein Operator überladen/überschrieben.

+4

Es gibt keine benutzerdefinierte extra-linguistische Überladung, aber '+' ist offensichtlich per Definition ein überladener Operator (d. H. Entweder String-Verkettung oder numerische Addition, vielleicht zur Verwirrung vieler Anfänger). Und das ist nur die binäre '+'; Es gibt auch eine unäre Version. – polygenelubricants

21

Operatorüberladung und -überschreibung werden in Java nicht unterstützt.

prüfen ab folgenden zitiert aus: http://java.sun.com/docs/white/langenv/Simple.doc2.html

2.2.7 No More Überladen von Operatoren

Es sind keine Mittel vorgesehen, mit denen Programmierer die Standard arithmetischen Operatoren überlasten können. Wiederum können die Auswirkungen der Operatorüberlastung genauso leicht erreicht werden, indem eine Klasse, geeignete Instanzvariablen, und geeignete Methoden zur Manipulation diese Variablen zu deklarieren. Eliminierung Operator Überlastung führt zu großen Vereinfachung des Codes.

6

Sie können den Operator in C++, aber nicht in Java überladen. Ich frage mich, ob Sie Method Overloading und Method Overriding meinten? Beim Überladen von Methoden gibt es zwei Definitionen für dieselbe Methodensignatur. Zum Beispiel

int sum(int var1, int var2) 
{ 
    return (var1+var2); 
} 

int sum(int var1, int var2, int var3) 
{ 
    return (var1+var2+var3); 
} 

In der objektorientierten Programmierung, außer Kraft setzen Sie (neu) eine Funktion, die aus Aszendenten (Basis) Klasse vererbt wird. Wenn in einer Klassenhierarchie eine Funktion (Methode) in einer Unterklasse denselben Namen und dieselbe Typunterschrift wie eine Methode in ihrer Oberklasse hat, dann sagt man, dass die Methode in der Unterklasse die Methode in der Oberklasse außer Kraft setzt.

+1

Auch in Java können Sie variable Argumente wie 'int sum (int ... vars)' deklarieren. – m0skit0

3

Es gibt ein javac-plugin (ein Annotationsprozessor wie Lombok) namens "Java-OO", das den Operator zu Java überladen lässt.

Es ermöglicht Ihnen, sehr leicht Operatorüberladung zu Ihren eigenen Klassen hinzuzufügen. Darüber hinaus unterstützen viele der integrierten Klassen der Java-API auch das Überladen von Operatoren bei Verwendung dieses Plugins. (Zum Beispiel: Statt list.get (6) oder map.get ("Hallo") können Sie die Liste tun können [6] und Karte [ "Hallo"])

Alles, was Sie tun müssen, ist zu Schließen Sie beim Kompilieren mit javac die .jar-Datei in den Klassenpfad ein.

Es gibt Plugins für alle wichtigen IDEs: Eclipse, Netbeans und IntelliJ IDEA.

Verwandte Themen