Java繼承中成員變數的訪問特點「圖文分析」包含繼承中重名訪問的特點
首先我們先定義一個父類,名字就叫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張圖體會一下
相關文章
- 18、繼承以及繼承中成員變數和成員方法的重名問題繼承變數
- 繼承的特點繼承
- 繼承中構造方法的特點繼承構造方法
- java中的繼承Java繼承
- 學習Java中遇到的繼承問題Java繼承
- 繼承應該是擁有且可訪問繼承
- C++中封裝和繼承的訪問許可權C++封裝繼承訪問許可權
- #JAVA#物件導向(繼承中成員方法的關係)Java物件繼承
- 繼承的優缺點繼承
- js/javascript 繼承方式主要有哪些?及其優缺點特點JSJavaScript繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- 繼承問題繼承
- 繼承的優點和缺點繼承
- TypeScript入門2:類、繼承、訪問修飾符TypeScript繼承
- [20231101]tmux環境變數的繼承問題.txtUX變數繼承
- JS中的繼承JS繼承
- PostgreSQL中的繼承SQL繼承
- JavaScript中的繼承JavaScript繼承
- Solidity中的繼承Solid繼承
- Java的繼承Java繼承
- 一文打盡Java繼承的相關問題Java繼承
- Java集合繼承圖Java繼承
- delegate 繼承問題繼承
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- Java中變數之區域性變數、本類成員變數、父類成員變數的訪問方法Java變數
- Java建構函式的繼承問題Java函式繼承
- JS中的繼承(下)JS繼承
- 聊聊JS中的繼承JS繼承
- JS中的繼承(上)JS繼承
- C++中的繼承C++繼承
- Java中的類繼承與多型Java繼承多型
- JAVA中的註解可以繼承嗎?Java繼承
- tour cpp: std::variant 實現無繼承層次的訪問者模式繼承模式
- 面試官問:JS的繼承面試JS繼承
- 類&成員可見性&繼承繼承
- Javascript繼承4:潔淨的繼承者—-原型式繼承JavaScript繼承原型
- PHP 抽象類繼承抽象類時的注意點PHP 抽象類繼承抽象類時的注意點PHP抽象繼承
- JS中繼承的實現JS中繼繼承