Java學習 java 多型

2021-08-13 05:28:02 字數 1830 閱讀 6536

多型:一種事物的多種形態

多型的規則(前提):

1.類與類之間要建立關係,建立繼承的關係

2.必須要有方法的重寫

3.父類的指標(引用) 指向子類的物件(空間)

public static void main(string args)

class animal

}class cat extends animal

}class dog extends animal

}

貓是乙隻動物 而不是動物是乙隻貓 這樣邏輯是不通的 在這裡動物是父類 貓狗是子類 貓狗是乙隻動物就相當於父類指向了子類的物件

多型時如何呼叫成員變數

多型時 當父類引用呼叫成員變數時

編譯 需要看父類中有沒有這個成員變數,沒有編譯不通過

執行 訪問就是父類中的這個成員變數

結論:

多型時 訪問成員變數 訪問父類 訪問成員變數 編譯 和 執行 (看父類)

多型呼叫成員變數時

編譯看父類 執行看子類

public static void main(string args)

class father

}class son

}

列印結果

多型時父類指向子類的物件在記憶體中的表現

那 現在在main函式中加上

son s = new son();

s.speak();

system.out.println(s.num);

列印結果是son說 20; 這個在記憶體中的表現

多型的好處

1.怎搶了**的可維護性(建立在繼承上)

2.增強方法的可擴充套件性(核心)

多型的弊端:

不能直接呼叫子類的特殊(不是重寫父類的)方法

如果呼叫子類的特殊方法,需要將父類強轉位子類的物件,然後物件點方法 呼叫子類的特殊方法

public static void main(string args)

class person

}class cheat extends person

public void puch()

}

在多型時 子類非常多的情況下 父類呼叫子類的方法時 可以封裝乙個方法 引數是父類的物件 在傳參的時候匿名建立new dao 相當於 wuqi w = new dao();——父類指向子類的物件 進行呼叫 我們想呼叫子類的特殊方法 這裡需要用乙個 instanceof 關鍵字 這個關鍵字 是判斷 前面的物件是否屬於 後面的 例項

public static void main(string args)

public static void fun(wuqi w)else if(w instanceof jian)

}class wuqi

}class jian extends wuqi

public void liangjian()

}class dao extends wuqi

public void liangdao()

}

JAVA學習 多型

需求 實現多型 功能演化,先要求,能繼承父類,實現,功能。貓吃魚,狗吃骨頭,豬吃飼料。貓狗豬都有自己的特有屬性,他們都屬於動物。第124行的 問題。沒有解決。abstract class animal class cat extends animal public void catchmouse c...

Java學習 多型

用方法重寫和方法過載來實現 方法重寫 要求子類的訪問修飾符要大於等於父類的訪問修飾符 宣告父類,建立子類 父類裝載子類 父類的引用指向子類的例項 1.宣告誰的引用,就呼叫誰的屬性和方法 不管new的是誰 2建立的 new 是誰的空間,就實現誰的功能 3.建立什麼型別,就可以強轉成什麼型別 將父類轉成...

Java學習 多型

多型可以理解為事物存在的多種體現形態 人 男人,女人 貓 x new 貓 動物 x new 貓 1 多型的體現 父類的引用指向類自己的子類物件。父類的引用也可以接收自己的子類物件 2 多型的前提 必須是類與類有關係,要麼繼承要麼實現 通常還有乙個前提,存在覆蓋。3 多型的好處 多型的出現大大的調高程...