java基礎筆記(十一)多型
阿新 • • 發佈:2018-11-21
概念:
同一個物件,在不同時刻體現出不同的狀態
舉例:
貓是貓。貓是動物
Animal cat1 = new Cat();
多型前提:
- 要有繼承關係
- 要有方法重寫(多型的體現)
- 要有父類引用指向子類 Animal cat1 = new Cat();
多型優缺點處
- 提高程式碼維護性
- 提高了程式碼的擴充套件性
- 不能訪問子類特有功能
如果想要使用子類特有功能:
Animal cat4 = new Cat();
Cat cat5 = (Cat) cat4;
cat5.show3 (); //訪問子類特有功能
cat5.show1();//訪問子類靜態方法
cat4.show1();//訪問父類靜態方法
多型中成員訪問特點:
Animal cat1 = new Cat();
Animal 為左邊; Cat()為右邊
- 成員變數:編譯執行看左邊
- 構造方法:建立子類物件的時候,訪問父類的構造方法,對父類的資料進行初始化
- 成員方法:編譯看左邊,執行看右邊(方法重寫)
- 靜態方法:編譯執行看左邊 (靜態方法和類相關,不算方法重寫,所以執行也會顯示父類方法)
舉例:
//父類
public class Animal {
String a = "動物的成員變數";
public void show(){
System.out.println("父類的show");
}
public static void show1(){
System.out.println("父類的靜態show");
}
}
//子類:
public class Cat extends Animal{
String a = "貓的成員變數";
public void show(){
System.out.println("子類的show");
}
public static void show1 (){
System.out.println("子類的靜態show");
}
}
//測試:
public class ExtendsDemo4 {
public static void main(String[] args) {
//多型訪問成員方法:
Animal cat3 = new Cat();
System.out.println(cat3.a);//編譯使用的是動物(父類)的show,執行結果顯示是動物(父類)的show
cat3.show(); //編譯使用的是動物(父類)的show,但執行結果顯示是貓(子類)的show
cat3.show1(); //訪問靜態方法
}
}
//顯示:
動物的成員變數
子類的show
父類的靜態show