日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

《疯狂Java讲义精粹》读书笔记2 ------ 多态

發布時間:2023/12/19 java 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《疯狂Java讲义精粹》读书笔记2 ------ 多态 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

-----------------《瘋狂Java講義精粹》2讀書筆記---------------

  Java引用變量有兩個類型:

    · 編譯時類型(由聲明該變量時使用的類型決定)
    · 運行時類型(由實際賦給該變量的對象決定)

  編譯時類型和運行時類型不一致,就可能出現多態(Polymorphism)。往往是相同類型的變量、調用同一個方法時呈現出多種不同的行為特征。

?

看下面這個例子:

1 public class TestExtends extends BaseClass{ 2 public String book = "子類的book成員"; 3 public void test(){ 4 System.out.println("子類覆蓋父類的test方法"); 5 } 6 public void sub(){ 7 System.out.println("子類自己的方法"); 8 } 9 10 public static void main(String[] args) { 11 /** 12 * 子類其實是一種特殊的父類,因此Java允許把一個子類對象直接賦給一個父類引用, 13 * 無需仍和轉換,或者稱為向上轉型(upcasting),由系統自動完成。 14 */ 15 BaseClass bc = new TestExtends();//父類引用指向子類對象 16 System.out.println(bc.book);//調用父類的book 17 bc.base();//調用基類的普通方法 18 bc.test();//調用子類覆蓋的方法 19 //bc.sub();//將會出錯 20 } 21 }

結果為:

6基類的普通方法....子類覆蓋父類的test方法

?

  通過引用變量來訪問其包含的實例成員時,系統總是訪問它編譯時所定義的成員,而不是運行時所定義的成員,即使它實際所引用的對象確實包含該方法。

例如上面的引用變量bc想調用運行時的成員方法sub(即bc.sub())時就會出錯。

  那么怎么才能讓這個引用變量調用它運行時的成員方法呢?
  其實很簡單,只需要強制轉換類型就可以了。也就是說:強制轉換類型可以將一個引用類型的變量轉換成其子類類型。當然,在執行強制轉換類型時應當注意:
    · 基本類型的轉換只能在數值類型(整形、字符型和浮點型)之間轉換。數值類型和布爾類型之間不能進行類型轉換。
    · 引用類型之間的轉換只能在具有繼承關系的兩個類型之間轉換。如果試圖把一個父類型轉換成子類類型,則這個對象必須實際上是子類實例才行(即編譯時類型為父類型,而運行時類型為子類類型才行),否則會出現ClassCastException異常。

  例如:將上面的代碼第19行進行強制類型轉換從而調用子類的成員方法:

19 ((TestExtends) bc).sub();//轉換后調用運行時的成員方法

運行的結果為:

6基類的普通方法....子類覆蓋父類的test方法子類自己的方法

?

  

轉載于:https://www.cnblogs.com/CocoonFan/archive/2013/03/05/2943663.html

總結

以上是生活随笔為你收集整理的《疯狂Java讲义精粹》读书笔记2 ------ 多态的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。