1. 程式人生 > >java基礎筆記(十一)多型

java基礎筆記(十一)多型

概念:

同一個物件,在不同時刻體現出不同的狀態

舉例:

貓是貓。貓是動物

Animal cat1 = new Cat();

多型前提:

  1. 要有繼承關係
  2. 要有方法重寫(多型的體現)
  3. 要有父類引用指向子類 Animal cat1 = new Cat();

多型優缺點處

  • 提高程式碼維護性
  • 提高了程式碼的擴充套件性
  • 不能訪問子類特有功能

如果想要使用子類特有功能:

		Animal cat4 = new Cat();
		Cat cat5 = (Cat) cat4;
		cat5.show3
(); //訪問子類特有功能 cat5.show1();//訪問子類靜態方法 cat4.show1();//訪問父類靜態方法

多型中成員訪問特點:

Animal cat1 = new Cat();

Animal 為左邊; Cat()為右邊

  1. 成員變數:編譯執行看左邊
  2. 構造方法:建立子類物件的時候,訪問父類的構造方法,對父類的資料進行初始化
  3. 成員方法:編譯看左邊,執行看右邊(方法重寫)
  4. 靜態方法:編譯執行看左邊 (靜態方法和類相關,不算方法重寫,所以執行也會顯示父類方法)

舉例:

//父類
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