多態

1.概念:父類的引用可以指向不同子類對象,從而導致父類引用的多種形態。

2.語法:父類類名 引用名=new 子類類名(構造參數);

    父類類型             子類類型

    父類引用             子類對象

    主觀認為類型          客觀實際類型

3.特點:

① 子類對象類型,始終不變;

② 編譯時,使用父類引用只能調用父類中聲明的方法或屬性,不可以調用子類獨有

        的屬性和方法;

③ 運行時,如果子類覆蓋了父類中的方法,則執行子類中覆蓋的方法,否則執行從

        父類繼承到的方法。

4.對象類型 的 類型轉換

① 子類對象 賦值給 父類引用

       Animal a=new Dog();

       結論:多態(父類引用  指向 子類對象)

② 父類引用 賦值給 子類引用(小類型= 大類型)

      Animal  a=new Dog();

      Dog 

d=(Dog)a;

結論:父類引用賦值給子類引用,必須進行強制類型轉換(只保證編譯OK);

          運行時,可能會出現java.lang.ClassCastException類型轉換異常。

③ 不存在繼承關系的對象 相互賦值

Dog d=new Dog();

Person p=(Person)d; //Error,沒有關系

結論:不存在繼承關系的對象,不允許相互轉換。

instanceof

① 語法: 引用名 instanceof 類名

      判斷引用指向的對象和后面的類型,是否兼容:兼容-true;不兼容-false。

② 作用:先判斷真實類型,再進行向下轉型,可以避免轉換類型異常。

③ 例:

         Animal a = new Dog();

            a instanceof Dog  //true

            a instanceof Cat  //false

            a instanceof Animal  //true

6.多態在開發中的應用

① 多態應用在方法的參數上

    調用方法時,可以傳的實參類型包括 父類和其所有的子類對象。

  ② 多態應用在返回值上

    調用方法后,可以得到的結果類型包括 父類和其所有的子類對象。

7.多態的好處

對使用者 屏蔽各子類間的不同差異,使得方法的調用更簡單、通用。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 第2章 多態2.1 多態概述多態是繼封裝、繼承之后,面向對象的第三大特性。現實事物經常會體現出多種形態,如學生,學...
    葡小萄家的貓閱讀 3,237評論 1 6
  • 1.面向對象三大特性 -封裝性 -繼承性 -多態性 2.什么是封裝 封裝性就是隱藏實現細節,僅對外公開接口。 3....
    夢夜繁星閱讀 1,118評論 0 6
  • 一.成員變量與局部變量的區別 成員變量:在類中定義,用來描述對象將要有什么(屬性)。可被本類方法和其他跟當前類有關...
    jeffierw閱讀 559評論 0 0
  • 多態就是對象的多種形態,即相同的消息使得不同的類做出不同的響應。 多態存在的三個必要條件:繼承、重寫、父類變量引用...
    予別她閱讀 454評論 0 0
  • 繼承和多態 1. 繼承的優缺點 優點:(1)子類可以靈活地改變父類中的已有方法;(2)能夠最大限度的實現代碼重用。...
    MinoyJet閱讀 664評論 0 0