【java基礎】之多態詳解

前言

java學習已經學習很長時間了,以前java基礎的面向對象的三大特徵部分沒有重點看,今天補回來,這裏主要寫多態。

多態的概念
  1. 面向對象的三大特徵

封裝、繼承、多態

  1. 多態性的前提

extendsimplement,是多態性的前提。

  1. 概念

一個對象即有某種形態,又有另一種形態,這就是對象的多態性。
注意:多態指的是是對象而不是類。

4.圖解
在這裏插入圖片描述

多態的格式和使用

代碼中體現多態性。其實只有一句話,父類引用指向子類對象。

分類名稱 對象名 = new 子類名稱();
//或者
接口名稱 對象名 = new 實現類();

在這裏插入圖片描述
輸出結果:
在這裏插入圖片描述

注意:
new 的是子類對象,所以調用子類對象,
子類中沒有的方法,父類中有,調用的是父類中的方法。


多態中變量成員的使用特點

訪問成員變量的兩種方式:

  1. 直接通過對象名稱訪問變量,看等號左邊是誰,優先用誰,沒有則往上找。
  2. 間接通過成員方法訪問變量,看方法屬於誰,就優先用誰,沒有則往上找。
//父類中定義的num=10,子類中num=20
    public static void main(String[] args) {
        Fu obj = new Zi();
        System.out.println(obj.num);
    }

輸出結果爲:10
如果在子類中定義一個age成員變量,在測試中找不到該成員變量。
在這裏插入圖片描述


多態中成員方法的訪問規則

看new的是誰,就優先用誰,沒有則往上找。

重點:
成員方法中:編譯向左,運行向右。
成員變量中:編譯向左,運行向右。
解釋:
在這裏插入圖片描述

使用多態的好處

在這裏插入圖片描述
無論右邊new的時候換成哪個子類對象,等號左邊不會改變,更加靈活。


對象的向上轉型(自動轉型)

格式:父類名稱 對象名 = new 子類名稱();
含義:右側創建一個子類對象,把它當做父類對象來使用。

注意:向上轉型一定是安全的,因爲把小範圍的轉化爲了大範圍。
Animal animal = new Cat();
把貓轉化爲了動物,小範圍變成了大範圍。

缺點:
如果向上轉型,那麼無法調用子類特有的方法。
**解決方法:**向下轉型

對象的向下轉型

向下轉型:其實就是一個還原過程。

格式:子類名稱 對象名 = (子類名稱)父類對象

含義:將父類對象,還原成原本的子類對象。
注意:
必須保證對象原來創建的是貓,向下轉型的時候也是貓。

如何判斷對象是否是類的實例呢,使用instanceof

instanceof關鍵字

使用方法
格式:對象 instanceof 關鍵字
返回值:boolean(判斷對象是否是後面類的實例)


已有的事,後必在有。已行的事,後必再行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章