Java -Polymorphismus
Es gibt zwei Arten von Polymorphismus:
(1) Kompilierungszeitpolymorphismus (Polymorphismus für Designzeit): Methodenüberlastung.
. (Die Dinge, über die wir normalerweise sprechen, sind die Laufzeit -Polymorphismus, daher bezieht sich Polymorphismus hauptsächlich auf den Laufzeitpolymorphismus.)
Drei notwendige Bedingungen für die Existenz von Polymorphismus zur Laufzeit:
1. Es muss Erbschaft (einschließlich der Umsetzung von Schnittstellen) geben;
2. Es muss neu schreiben;
3. Die übergeordnete Klassenreferenz weist auf das Objekt der untergeordneten Klasse auf.
Vorteile des Polymorphismus:
1. Substituierbarkeit. Polymorphismen sind für vorhandene Codes austauschbar. Zum Beispiel wirkt der Polymorphismus in der Kreisklasse und arbeitet auch in jeder anderen kreisförmigen Geometrie wie einem Kreis.
2. Erweiterbarkeit. Polymorphismus ist skalierbar zu Code. Das Hinzufügen neuer Unterklassen beeinflusst keinen Einfluss auf den Betrieb und den Betrieb der Polymorphismen der bestehenden Klassen, der Vererbung und anderer Eigenschaften. Tatsächlich ist es einfacher, polymorphe Funktionen durch Hinzufügen neuer Unterklassen zu erhalten. Zum Beispiel ist es auf der Grundlage der Realisierung des Polymorphismus von Zapfen, Semikonen und Hemisphären leicht, Polymorphismen von Kugeln hinzuzufügen.
3. Schnittstellenfähigkeit. Der Polymorphismus wird durch Superklassen durch Methodensignaturen erreicht, die eine gemeinsame Schnittstelle für Unterklassen bereitstellen, und Unterklassen werden von Unterklassen implementiert, um sie zu verbessern oder zu überschreiben. Wie in Abbildung 8.3 gezeigt. In der Abbildung gibt die Superklassenform zwei Grenzflächenmethoden an, die Polymorphismus implementieren, CompumneArea () und ComputeneVolume (). Unterklassen wie Kreis und Kugel verbessern oder überschreiben diese beiden Grenzflächenmethoden, um Polymorphismus zu erreichen.
4. Flexibilität. Es spiegelt flexible und vielfältige Operationen in Anwendungen wider und verbessert die Nutzungseffizienz.
5. Einfachheit. Der Polymorphismus vereinfacht den Code -Schreib- und Änderungsprozess der Anwendungssoftware, insbesondere wenn es sich um den Betrieb und den Betrieb einer großen Anzahl von Objekten handelt. Diese Funktion ist besonders prominent und wichtig.
Hinweis: Die Priorität ist von hoch zu niedrig: this.show (o), Super.Show (o), this.show ((super) o, Super.Show ((Super) O).
Verwandte Interviewfragen:
Klasse A {public String show (d obj) .. {return ("a und d"); } public String show (a obj) .. {return ("a und a"); }} Klasse B erweitert eine {public String show (b obj) .. {return ("b und b"); } public String show (a obj) .. {return ("b und a"); }} Klasse C erweitert sich B ... {} Klasse D erweitert B ... {}(2) Frage: Was sind die folgenden Ausgabeergebnisse?
A1 = neu a ();
A A2 = neu B ();
B b = neu B ();
C c = neu c ();
D d = neu d ();
System.out.println (a1.show (b)); ①
System.out.println (a1.show (c)); ②
System.out.println (a1.show (d)); ③
System.out.println (a2.show (b)); ④
System.out.println (a2.show (c)); ⑤
System.out.println (a2.show (d)); ⑥
System.out.println (B.Show (b)); ⑦
System.out.println (B.Show (c)); ⑧
System.out.println (B.Show (d)); ⑨
(Iii) Antwort
① a und a
② a und a
③ a und d
④ b und a
⑤ b und a
⑥ a und d
⑦ B und B
⑧ B und B
⑨ a und d
analysieren:
Bei dieser Art von Frage müssen Sie immer die Prioritätsreihenfolge verwenden:
Für Frage eins:
A1 ist ein instanziiertes Objekt der Klasse A, sodass dies auf A zeigt und dann nach dieser.how (b) sucht. Da es keine Methode gibt, geht es an Super.show (B). Da die Klasse A jedoch keine Superklasse hat, geht es zu dieser .how (Super B). Da die Superklasse von B A A ist, entspricht es dieser .how (a). Dann befindet sich diese Methode in der Klasse A, so dass A und A ausgegeben werden.
Für Frage 2:
In ähnlicher Weise ist A1 ein instanziiertes Objekt der Klasse A, sodass dies auf A verweist und dann nach dieser Methode (c) in Klasse A sucht. Da es keine solche Methode gibt, gehe ich zu Super.Show (c). Da ich dies in der Superklasse von Klasse A suche, hat A aber keine Superklasse, also gehe ich zu dieser .how (Super C). Da die Superklasse von C B B ist, suche ich nach dieser. Dann hat B auch eine Superklasse, die a ist, also suche ich nach dieser.
Für Frage 3:
In ähnlicher Weise ist A1 ein instanziiertes Objekt der Klasse A, sodass dies auf A zeigt und dann dies findet.
Für Frage 4:
A2 ist ein Referenzobjekt von Klasse B mit Typ A, sodass dies auf die Klasse A zeigt und dann dies findet. Da Klasse A keine Superklasse hat, kommt dies auf. Die Superklasse von B ist A, dh Super B = A, also führen Sie diese Methode aus. Show (a), suchen Sie nach Show (a) in Methode A und finden Sie es, aber da A2 ein Referenzobjekt der Klasse B ist, und Klasse B die Show (A) -Methode der Klasse A, die endgültige Ausführung der Show (A) -Methode in Klasse B, dh Ausgabe B und A;
Für Frage 5:
A2 ist ein Referenzobjekt von Klasse B mit Typ A, sodass dies auf die Klasse A zeigt und dann nach dieser. Da Klasse A keine Superklasse hat, ist er B, also ist es B, so dass es in Klasse A gefunden wird, aber es wird nicht gefunden. B hat auch eine Superklasse, dh A, so dass sie weiterhin nach der Show (A) -Methode in Klasse A sucht und gefunden wurde. Da A2 jedoch ein Referenzobjekt von Klasse B ist und die Show B die Show (A) -Methode der Klasse A abdeckt, wird sie schließlich ausgeführt. Die Show (a) -Methode in Klasse B, dh die Ausgabe von B und A;
Für Frage 6:
A2 ist ein Referenzobjekt von Klasse B mit Typ A, sodass dies auf die Klasse A zeigt und dann diese Methode (D) in der Klasse A gefunden und es gefunden hat. Da A2 jedoch ein Referenzobjekt von Klasse B ist, wird es in der Klasse B gefunden, sodass es sich in der Klasse B befindet, ob eine überschriebene Show (D) -Methode vorhanden ist, sodass es ausgeführt wird. Die Show (d) -Methode in Klasse A, dh Ausgabe A und D;
Für Frage sieben:
B ist ein sofortiges Objekt der Klasse B. Der Premierminister führt dies aus.
Für Frage 8:
B ist ein sofortiges Objekt von Klasse B. Der Premierminister führt dies aus. Show (b) F -Methode in der Klasse B, ich finde es. Wenn ich also die Show (B) in der Klasse B ausführe, geben ich B und B aus;
Für Frage 9:
B ist ein sofortiges Objekt von Klasse B. Der Premierminister führt dies aus.
Dies ist die Methode, die ich nach dem Lesen der Fragen im Internet zusammengefasst habe. Ich hoffe, es wird für alle von Vorteil sein.
Danke fürs Lesen, ich hoffe, es kann Ihnen helfen. Vielen Dank für Ihre Unterstützung für diese Seite!