Polymorphismus:
---Mehrere Formen eines Objekts
Essenz: Die Referenz der übergeordneten Klasse zeigt auf das Unterklassenobjekt
---Voraussetzung : Muss
class Animal{}
class Dog erweitert Animal{}
main{
Dog d = new Dog(); // Wahrer Zustand
Animal dog = new Dog(); //Polymorphic
}
Hinweis: Durch polymorphe Form erstellte Objekte können nur Can Greifen Sie auf die gemeinsamen Mitgliedsmethoden der untergeordneten und übergeordneten Klassen zu. Das Ergebnis der Operation ist, dass die für die Unterklasse eindeutigen Mitgliedsmethoden nicht verwendet werden können.
Virtueller Methodenaufruf:
Das übergeordnete Klassenobjekt ruft die unterklassenspezifische Methode auf
Student S = neuer Student("Zhang San",100);
Person p = new Student("李思",200);
System.out.println(S.say());
System.out.println(p.say ( ));
Polymorphes Array – In einem Array von Referenztypen werden Objekte in polymorpher Form gespeichert.
eg:Person[] person = {new Person("张三", 32),
new Student("李思", 21, 120, 90.0),
neuer Schüler("王五", 22, 119, 91.5),
neuer Lehrer(" Teacher Liu", 35, 10, "Java EE"),
neuer Lehrer( „Teacher Zhang“, 11)};
Polymorphe Parameter – Referenztypparameter in der Methodenparameterliste
Instanceof-Operator – Bestimmen Sie, ob ein Objekt vom angegebenen Typ ist (Form)
Zwang – Konvertieren eines Objekts von einer Referenzform in eine andere
Objektzuordnung:
Ein Objekt wird in einem anderen Objekt verwendet
Ein- zu eins, eins zu viele, viele zu eins
class test4 { public static void main(String[] args){ Person p = new Person("王五",50); method(p); Student S = new Student("张三",100); method(S); Person p1 = new Student("赵四",100); method(p1); } public static void method(Person p){ if (p instanceof Student){ System.out.println("教师"); Student s = (Student)p; System.out.println("本态方法调用:"+p.say()); }else{ System.out.println("人"); } System.out.println(p.say()); } } class Person{ private String name; private int age; public Person(){} public Person(String name,int age){ this.name = name; this.age = age; } public String getName(){ return name; } public String say(){ return "姓名:"+name+"年龄:"+age; } } class Student extends Person{ private int id; private double score; public Student(String name,int id){ this(name,20,id,98.5); } public Student(String name,int age,int id,double score){ super(name,age); this.id = id; this.score = score; } public double getId(){ return id; } public String say(){ return super.say()+"学号:"+id+"分数:"+score; } }