Heim > Java > JavaErste Schritte > Java objektorientiert – ausführliche Einführung in den Polymorphismus

Java objektorientiert – ausführliche Einführung in den Polymorphismus

王林
Freigeben: 2019-11-30 14:21:33
nach vorne
3073 Leute haben es durchsucht

Java objektorientiert – ausführliche Einführung in den Polymorphismus

1. Überblick

Polymorphismus ist nach Kapselung und Vererbung das dritte Hauptmerkmal der Objektorientierung.

Im Leben laufen beispielsweise Laufbewegungen, Kätzchen, Welpen und Elefanten unterschiedlich. Ein weiteres Beispiel ist die Flugbewegung. Auch Insekten, Vögel und Flugzeuge fliegen unterschiedlich. Es ist ersichtlich, dass sich das gleiche Verhalten durch unterschiedliche Dinge in unterschiedlicher Form manifestieren kann. Polymorphismus beschreibt diesen Zustand.

Polymorphismus:

bezieht sich auf dasselbe Verhalten mit mehreren unterschiedlichen Erscheinungsformen.

Prämisse [Wichtige Punkte]

1. Übernehmen oder implementieren [wählen Sie einen]

2. Schreiben Sie die Methode neu , bedeutungslos]

3. Die Referenz der übergeordneten Klasse verweist auf das Unterklassenobjekt [Formatausdruck]

Kostenlose Online-Lernvideoempfehlung: Java-Video

2. Polymorphe Manifestation

Das Format der polymorphen Manifestation:

父类类型 变量名 = new 子类对象; 
变量名.方法名();
Nach dem Login kopieren

Typ der übergeordneten Klasse: Bezieht sich auf den Typ der übergeordneten Klasse, der vom Unterklassenobjekt geerbt wird Implementierung Der übergeordnete Schnittstellentyp.

Der Code lautet wie folgt:

Fu f = new Zi(); 
f.method();
Nach dem Login kopieren

Überprüfen Sie beim Aufruf einer Methode mit Polymorphismus zunächst, ob die Methode in der übergeordneten Klasse If vorhanden ist Wenn nicht, tritt ein Kompilierungsfehler auf. Wenn dies der Fall ist, wird die überschriebene Methode der Unterklasse ausgeführt.

Der Code lautet wie folgt:

Definieren Sie die übergeordnete Klasse:

Java objektorientiert – ausführliche Einführung in den Polymorphismus

Definieren Sie die Unterklasse:

Java objektorientiert – ausführliche Einführung in den Polymorphismus

Testklasse definieren:

Java objektorientiert – ausführliche Einführung in den Polymorphismus

3. Die Vorteile von Polymorphismus

Der eigentliche Entwicklungsprozess In der Methode wird der Typ der übergeordneten Klasse als formaler Parameter der Methode verwendet, um das Unterklassenobjekt an die Methode zu übergeben und die Methode aufzurufen, was die Skalierbarkeit und Bequemlichkeit des Polymorphismus besser widerspiegeln kann.

Der Code lautet wie folgt:

Definieren Sie die übergeordnete Klasse:

Java objektorientiert – ausführliche Einführung in den Polymorphismus

Definieren Sie die Unterklasse:

Java objektorientiert – ausführliche Einführung in den Polymorphismus

Definieren Sie die Testklasse:

public class Test {
    public static void main(String[] args) {
        // 多态形式,创建对象
        // Cat c = new Cat();
        // Dog d = new Dog();

        // 调用showCatEat showCatEat(c);
        // 调用showDogEat
        showDogEat(d);

        /*
        以上两个方法, 均可以被showAnimalEat(Animal a)方法所替代而执行效果一致
        */
        showAnimalEat(c);
        showAnimalEat(d);
    }

    public static void showCatEat(Cat c) {
        c.eat();
    }

    public static void showDogEat(Dog d) {
        d.eat();
    }

    public static void showAnimalEat(Animal a) {
        a.eat();
    }
}
Nach dem Login kopieren

Wenn die Eat-Methode ausgeführt wird, legt der Polymorphismus fest, dass die von der Unterklasse neu geschriebene Methode ausgeführt wird, sodass der Effekt natürlich mit den Methoden showCatEat und showDogEat übereinstimmt , sodass showAnimalEat die beiden oben genannten Methoden vollständig ersetzen kann.

In Bezug auf die Skalierbarkeit müssen wir die showXxxEat-Methode nicht schreiben. Sie kann direkt mit showAnimalEat vervollständigt werden.

Die Vorteile des Polymorphismus liegen also darin, dass er das Schreiben von Programmen erleichtert und eine gute Skalierbarkeit aufweist.

4. Referenztypkonvertierung

Die polymorphe Transformation ist in zwei Typen unterteilt: Aufwärtstransformation und Abwärtstransformation:

Upcasting

Upcasting: Polymorphismus selbst ist der Prozess des Upcastings eines Unterklassentyps in einen übergeordneten Klassentyp.

Wenn die Referenz der übergeordneten Klasse auf ein Unterklassenobjekt verweist, handelt es sich um eine Aufwärtstransformation.

Verwenden Sie das Format:

父类类型 变量名 = new 子类类型(); 
如:Animal a = new Cat();
Nach dem Login kopieren

Downcast

Der Prozess der Abwärtskonvertierung des übergeordneten Klassentyps in den Unterklassentyp. Dieser Prozess ist obligatorisch.

Ein Unterklassenobjekt, das nach oben transformiert wurde, kann das Format der erzwungenen Typkonvertierung verwenden, bei dem es sich um eine Abwärtstransformation handelt.

Format verwenden:

子类类型 变量名 = (子类类型) 父类变量名; 
如 :Cat c =(Cat) a;
Nach dem Login kopieren

Transformationsdemonstration, der Code lautet wie folgt:

Klasse definieren:

Java objektorientiert – ausführliche Einführung in den Polymorphismus

Definieren Testklasse:

Java objektorientiert – ausführliche Einführung in den Polymorphismus

Abnormalität der Transformation

转型的过程中,一不小心就会遇到这样的问题,请看如下代码:

Java objektorientiert – ausführliche Einführung in den Polymorphismus

这段代码可以通过编译,但是运行时,却报出了ClassCastException,类型转换异常!这是因为,明明创建了Cat类型对象,运行时,当然不能转换成Dog对象的。这两个类型并没有任何继承关系,不符合类型转换的定义。

为了避免ClassCastException的发生,Java提供了 关键字,给引用变量做类型的校验。

格式如下:

变量名 instanceof 数据类型
如果变量属于该数据类型,返回true。
如果变量不属于该数据类型,返回false。
Nach dem Login kopieren

所以,转换前,我们最好先做一个判断,代码如下:

Java objektorientiert – ausführliche Einführung in den Polymorphismus

想学习更多相关教程请访问:java入门学习

Das obige ist der detaillierte Inhalt vonJava objektorientiert – ausführliche Einführung in den Polymorphismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage