本文目錄一覽:
關於Java多態的實例分析
1–:a1是類A的實例,所以只能調用A類中的show方法,參數b是類B的實例,B又是A的子類,所以只能調用類A中參數是A obj的那個方法,因為b只能轉換為父類型A,不能轉換為子類型D
2–:道理同上。
3–:道理同上。
由於前三條的變量類型和對象類型相同,不涉及多態,僅僅是重載的問題。
4–:此條代碼是難點,這裡涉及到了重寫和重載的概念,把重寫和重載徹底理解了,你就知道為什麼輸出是B and A了。重寫是子類中的方法和父類中的方法同名,同返回類型,同類型參數。
而重載是同一個類中的兩個方法(注意是同一個類中),名相同,但是參數類型不同或者數量不同。因為a2引用的是B類的實例,所以要去B類中找重寫的show方法,而不是重載的。所以只能調用參數類型是A的那個方法。
5–:道理同第4條。
6–:B類中繼承了A類的參數為D類型的show方法,只繼承而沒有重寫。也就是B類中實際有三個方法,所以此條代碼調用的是參數為D的方法。
7–:把上面的都理解了。7,8,9條代碼就很容易理解了。
7,8,9和1,2,3一樣不存在多態,僅僅是重載方法的調用。多態是父類變量引用子類對象才會發生的。變量類型和對象類型相同,只會涉及重載,和重寫無關。
你發的這段代碼,我在網上找到了一個博文,看了他的解釋,開始我覺得很難理解,後來才明白,他的解釋是混亂的。正確的原理是重寫和重載。只要你把重寫和重載的區別理解透徹,這段代碼就容易理解了。
JAVA中多態是怎麼一回事,能不能舉個例子,嗷嗷感謝!
java多態其實很簡單的….java多態必須滿足三個條件:1、繼承2、子類重寫父類方法3、父類引用調用子類對象接下來用例子一步一步解釋分別是什麼意思……繼承:公司員工 有測試員、開發員和項目經理 他們都有一些共同的屬性比如 年齡、性別、家庭地址、工資等。這時就可以將她們抽象出一個類出來 person 包括這些共同的屬性。然後測試員、開發員和項目經理去繼承這個類person後,就擁有了這些屬性了。子類重寫父類方法:測試員、開發員和項目經理的工資是不一樣的,他們又從繼承了工資這個屬性,顯然不能達到要求。此時就必須重寫從父類繼承過來的這個方法。父類引用調用子類對象:Person person = new Manager() 代碼:pulbic Person {
public void 工資() { System.out.println(3000);
}}
//=========================================
public Manager extends Person { //滿足條件1 繼承 public void 工資() { //滿足條件2 子類重寫父類方法 System.out.println(5000);
}
}//=========================================public Demo { public static void main(String[] args) {
Person person = new Manager(); //滿足條件3 父類引用調用子類對象
person.工資(); //打印 出5000;
}
}
JAVA中,為什麼要用多態,,怎麼用請給個通俗易懂的例子解釋下……
多態在兩方面有體現:
繼承多態
同一種抽象的東西在具體的類型中有不同的表現。比如大多數動物(抽象類)會叫,但是狗(實現類)就是汪汪汪,貓(實現類)就是喵喵喵
或者是具有包含關係需要修改表現,比如物品(父類)具有現實詳細信息的功能,但是書籍(子類)顯示詳細信息中可能還要包含書籍本身特有信息比如頁數、作者等等,這也是多態。
重載多態:同一個方法名在不同類型不同數量的參數傳入需要有不同的表現。
這個在構造方法上用的挺多,一般來說類都會有一個無參構造方法,還有不定的幾個有參構造方法,這是因為在編程期間需要調用不同的構造方法來產生不同的類。比如無參的就吧所有屬性置為默認值,有參的就用參數去初始化屬性等
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/198705.html