ポリモーフィズム:
---オブジェクトの複数の形式
本質:親クラスの参照は子クラスのオブジェクトを指します
---前提条件:継承または実装が必要です
class Animal{}
class Dog extends Animal{}
main{
Dog d = new Dog(); //元の状態
Animal Dog = new Dog(); //ポリモーフィック
}
注: ポリモーフィック形式で作成オブジェクトは、子クラスと親クラスに共通のメンバー メソッドにのみアクセスできます。この操作の結果、サブクラスに固有のメンバー メソッドは使用できなくなります。
仮想メソッド呼び出し:
親クラスオブジェクトはサブクラス固有のメソッドを呼び出します
Student S = new Student("张三",100);
person p = new Student("李思",200);
System.out.println(S.say());
System.out.println(p.say());
多態性配列 - 参照型の配列で、多態性形式を使用してオブジェクトを格納します。
例:person[] person = {new person("张三", 32),
新入生("李四", 21, 120, 90.0),
新入生("王五", 22, 119, 91.5),
new Teacher("Teacher Liu", 35, 10, "Java EE"),
new Teacher("Teacher Zhang", 11)};
多態性パラメータ - メソッドパラメータリスト
instanceof 演算子の参照型パラメーター - オブジェクトが指定された型 (形式) であるかどうかを決定します
強制型変換 - オブジェクトを 1 つの参照形式から別の参照形式に変換します
オブジェクトの関連付け:
オブジェクト 別のオブジェクトは
1対1、1対多、多対1で使用
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; } }