Java成員變量的隱藏(實(shí)例講解)
一、如果子類與父類中有一個(gè)相同名稱的成員變量,那么子類的成員變量會(huì)不會(huì)覆蓋父類的成員變量?我們看下在的例子:
public class A {
public int x=10;
}
public class B extends A {
public int x=20;
}
public class C {
public static void main(String[] args) {
A a=new B();
System.out.println(a.x); //1
B b=new B();
System.out.println(b.x); //2
System.out.println(((A)b).x); //3
}
}
運(yùn)行C類的main方法的結(jié)果為:
10
20
10
通過結(jié)果我們可以看出子類是不會(huì)覆蓋父類的成員變量,我們eclipse的調(diào)試工具也能很清晰的看出在對(duì)像a中同時(shí)存在兩個(gè)x的成員變量(其中一個(gè)是父類的),如下圖示:

通過第1個(gè)和第3個(gè)的結(jié)果,可以得出對(duì)像對(duì)于成員的直接訪問是靜態(tài)邦定的 ,官方解釋如下:
在一個(gè)類中,子類中的成員變量如果和父類中的成員變量同名,那么即使他們類型不一樣,只要名字一樣。父類中的成員變量都會(huì)被隱藏。
在子類中,父類的成員變量不能被簡(jiǎn)單的用引用來訪問。而是,必須從父類的引用獲得父類被隱藏的成員變量,一般來說,我們不推薦隱藏成員變量,
因?yàn)檫@樣會(huì)使代碼變得難以閱讀。
對(duì)于靜態(tài)方法與成員變量類似,如下:
public class A {
public static void print() {
System.out.println("A Static ");
}
}
public class B extends A {
public static void print() {
System.out.println("B Static ");
}
}
public class C {
public static void main(String[] args) {
A a=new B();
a.print();
B b=new B();
b.print();
((A)b).print();
}
}
結(jié)果如下:
A Static
B Static
A Static
以上這篇Java成員變量的隱藏(實(shí)例講解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java設(shè)計(jì)模式初識(shí)之備忘錄模式詳解
備忘錄設(shè)計(jì)模式(Memento Design Pattern)也叫作快照(Snapshot)模式,主要用于實(shí)現(xiàn)防丟失、撤銷、恢復(fù)等功能。本文將通過示例為大家介紹一些備忘錄模式的定義與使用,需要的可以參考一下2022-11-11
springboot多模塊多環(huán)境配置文件問題(動(dòng)態(tài)配置生產(chǎn)和開發(fā)環(huán)境)
這篇文章主要介紹了springboot多模塊多環(huán)境配置文件問題(動(dòng)態(tài)配置生產(chǎn)和開發(fā)環(huán)境),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Java如何獲取JSONObject內(nèi)指定字段key的value值
這篇文章主要介紹了Java如何獲取JSONObject內(nèi)指定字段key的value值問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
java+io+swing實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java+io+swing實(shí)現(xiàn)學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
spring boot 統(tǒng)一JSON格式的接口返回結(jié)果的實(shí)現(xiàn)
這篇文章主要介紹了spring boot 統(tǒng)一JSON格式的接口返回結(jié)果的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
Maven指令打包SpringBoot項(xiàng)目提示沒有主清單文件問題
在Java開發(fā)中,打包Jar時(shí)常會(huì)遇到“沒有主清單屬性”的錯(cuò)誤,這通常是因?yàn)樵趐om.xml文件中沒有正確配置maven插件導(dǎo)致的,特別是在使用自定義的<parent/>節(jié)點(diǎn)而非spring-boot-starter-parent時(shí)2024-09-09
關(guān)于mybatis if else if 條件判斷SQL片段表達(dá)式取值和拼接問題
這篇文章主要介紹了mybatis if else if 條件判斷SQL片段表達(dá)式取值和拼接,文章通過自己真實(shí)使用的例子給大家詳細(xì)介紹,需要的朋友可以參考下2021-09-09

