java的多態

來源:互聯網
上載者:User

標籤:

多態在代碼中的體現:
父類或者介面的引用指向其子類的對象。


多態的好處:
提高了代碼的擴充性,前期定義的代碼可以使用後期的內容。

多態的弊端:
前期定義的內容不能使用(調用)後期子類的特有內容。

多態的前提:
1,必須有關係,繼承,實現。
2,要有覆蓋。

 

//自動型別提升,貓對象提升了動物類型。但是特有功能無法s訪問。
//作用就是限制對特有功能的訪問。
//專業講:向上轉型。將子類型隱藏。就不用使用子類的特有方法。

//如果還想用具體動物貓的特有功能。
//你可以將該對象進行向下轉型。
//Cat c = (Cat)a;//向下轉型的目的是為了使用子類中的特有方法。
//c.eat();
//c.catchMouse();

//注意:對於轉型,自始自終都是子類對象在做著類型的變化。
//Animal a1 = new Dog();
//Cat c1 = (Cat)a1;//ClassCastException

 

if(a instanceof Cat)//instanceof:用於判斷對象的具體類型。只能用於引用資料類型判斷
////通常在向下轉型前用於健壯性的判斷。

 

多態時,
成員的特點:
1,成員變數。
編譯時間:參考引用型變數所屬的類中的是否有調用的成員變數,有,編譯通過,沒有,編譯失敗。
運行時:參考引用型變數所屬的類中的是否有調用的成員變數,並運行該所屬類中的成員變數。
簡單說:編譯和運行都參考等號的左邊。哦了。
作為瞭解。

 

2,成員函數(非靜態)。
編譯時間:參考引用型變數所屬的類中的是否有調用的函數。有,編譯通過,沒有,編譯失敗。
運行時:參考的是對象所屬的類中是否有調用的函數。
簡單說:編譯看左邊,運行看右邊。

因為成員函數存在覆蓋特性。

 


3,靜態函數。
編譯時間:參考引用型變數所屬的類中的是否有調用的靜態方法。
運行時:參考引用型變數所屬的類中的是否有調用的靜態方法。
簡單說,編譯和運行都看左邊。

其實對於靜態方法,是不需要對象的。直接用類名調用即可。

java的多態

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.