Java繼承中成員變數的訪問特點「圖文分析」包含繼承中重名訪問的特點

GordonSAYC發表於2020-10-04

首先我們先定義一個父類,名字就叫Fu

定義父類就是一個普通的類定義

package com.test.demo02;

public class Fu {
    int numFu = 10;
}

 

接著我們定義一個子類,名字就叫Zi

定義子類是普通類定義加上繼承關鍵字extends

package com.test.demo02;

public class Zi extends Fu {
    int numZi =20;
}

 

接下來我們定義一個帶有main方法的測試類Demo01ExtendsField,

在main方法中宣告並示例化Fu類

package com.test.demo02;

public class Demo01ExtendsField {
    public static void main(String[] args) {
        Fu fu =new Fu();//宣告並示例化父類

    }
}

 

在建立完Fu物件後,可以通過物件的引用來訪問物件所有的成員或方法,具體格式如下:

物件引用.物件成員
物件引用.物件方法

直觀一點表示:

new 類名().物件成員
new 類名().物件方法

或者更加直觀一點:

fu.物件成員
fu.物件方法 //fu是Fu類宣告並示例話的物件名稱

我們嘗試用呼叫物件的方法來嘗試呼叫方法,編譯器是帶有方法或屬性的提示的,如圖下圖

可以發現並沒有子類(Zi)裡的成員變數numZi我們完善程式,如下圖

接著宣告並例項化Zi類,並嘗試呼叫Zi類的方法,注意這個時候Zi是繼承自Fu類的哦,如下圖

                這時候可以發現子類(Zi)繼承了父類(Fu)後,可以呼叫父類裡的物件成員

補全後,如下圖

=============================華麗的分割線================================

承中重名訪問的特點:

在父子類的成員關係中,如果成員變數重名,則建立子類物件時,訪問有方式有二

直接:直接通過子類物件訪問成員變數(物件引用.物件成員)

           等號左邊是誰,就優先用誰,沒有則向上找

間接:間接通過成員方法訪問成員變數(物件引用.物件方法)

該方法屬於誰,就優先用誰,沒有則向上找(繼承是前提)

來3張圖體會一下

  

 

 

 

相關文章