Heim  >  Artikel  >  Java  >  Der Unterschied zwischen Überladen und Umschreiben in Java

Der Unterschied zwischen Überladen und Umschreiben in Java

(*-*)浩
(*-*)浩Original
2019-11-11 09:30:3010945Durchsuche

Der Unterschied zwischen Überladen und Umschreiben in Java

überschreiben bedeutet, es erneut zu schreiben. Tatsächlich geht es darum, die Methoden der übergeordneten Klasse selbst in der Unterklasse neu zu schreiben. Die Unterklasse erbt die ursprüngliche Methode der übergeordneten Klasse, aber manchmal möchte die Unterklasse eine Methode in der übergeordneten Klasse nicht unverändert erben, sodass der Methodenname, die Parameterliste und der Rückgabetyp (mit Ausnahme des Rückgabewerts der Methode in der Unterklasse) geändert werden Der Rückgabewert der Methode in der übergeordneten Klasse ist derselbe wie in der Unterklasse. Das Ändern oder Umschreiben des Methodenkörpers wird als Umschreiben bezeichnet. Es ist jedoch zu beachten, dass die Zugriffsänderungsberechtigungen der Unterklassenfunktionen nicht geringer sein dürfen als die der übergeordneten Klasse.

Zum Beispiel:

public class Father {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Son s = new Son();
        s.sayHello();
    }
    public void sayHello() {
        System.out.println("Hello");
    }
}
class Son extends Father{
    @Override
    public void sayHello() {
        // TODO Auto-generated method stub
        System.out.println("hello by ");
    }

}

Überladung (Overload)

In einer Klasse, wenn die Methode mit demselben Namen vorhanden ist Unterschiedliche Parameterlisten (unterschiedliche Parametertypen, unterschiedliche Anzahl von Parametern oder sogar unterschiedliche Parameterreihenfolge) gelten als Überladungen. Gleichzeitig erfordert die Überladung keine Rückgabetypen, die gleich oder unterschiedlich sein können. Die Überladung kann jedoch nicht danach beurteilt werden, ob die Rückgabetypen gleich sind.

Zum Beispiel:

public class Father {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Father s = new Father();
        s.sayHello();
        s.sayHello("wintershii");
    }

    public void sayHello() {
        System.out.println("Hello");
    }
    public void sayHello(String name) {
        System.out.println("Hello" + " " + name);
    }
}

Während des Interviews wurde gefragt: Was ist der Unterschied zwischen Überlastung und Übersteuerung?

Antwort: Überladungs- und Umschreibemethoden sind beide Möglichkeiten, Polymorphismus zu erreichen. Der Unterschied besteht darin, dass erstere Polymorphismus zur Kompilierungszeit implementiert, während letztere Polymorphismus zur Laufzeit implementiert.

In einer Klasse kommt es zu einer Überladung. Wenn eine Methode mit demselben Namen eine andere Parameterliste hat (verschiedene Parametertypen, unterschiedliche Anzahl von Parametern oder beides), wird dies als Überladung betrachtet. Zwischen der Unterklasse und der übergeordneten Klasse erfordert das Überschreiben, dass die überschriebene Methode der Unterklasse dieselbe Parameterliste wie die überschriebene Methode der übergeordneten Klasse hat, einen kompatiblen Rückgabetyp aufweist und leichter zugänglich ist als die überschriebene Methode der übergeordneten Klasse. und kann nicht mit der überschriebenen Methode der übergeordneten Klasse verglichen werden. Die überschriebene Methode der übergeordneten Klasse deklariert mehr Ausnahmen (Liskov-Substitutionsprinzip).

Für die Überladung gelten keine besonderen Anforderungen an den Rückgabetyp und es kann nicht anhand des Rückgabetyps unterschieden werden.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen Überladen und Umschreiben in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn