導航:首頁 > 編程語言 > java成員變數的覆蓋

java成員變數的覆蓋

發布時間:2023-12-17 17:51:27

『壹』 如何理解Java中的隱藏與覆蓋

隱藏與覆蓋類方法
在講清這個問題之前,先明白什麼是隱藏?什麼是覆蓋?
所謂隱藏,是指運行時系統調用當前對象引用的編譯時類型中定義的方法;對於覆蓋,則指運行時系統調用當前對象引用運行時類型中定義的方法。
所以在執行Student1
s
=
new
Graate1();和Graate1
g
=
new
Graate1();時,(1)先進行Student1類的構造,這里包括兩個方法study()和exercise(),由於study()方法被覆蓋,所以先執行Graate1里study(),再執行Student1里的exercise();(2)再進行Graate1類的構造,同樣包括兩個方法study()和exercise(),所以執行順序為先Graate1里的study()方法,再Graate1里的exercise()方法。
2.
隱藏與覆蓋成員變數
如果子類中的變數和父類中的變數具有相同的名字,那麼子類中的變數就會隱藏父類中的變數,不管他們的類型是什麼,也不管他們是類變數還是實例變數。
所以在執行諸如System.out.print(s.math);之類的s實例的程序時,顯示為Student1類的成員變數,而執行諸如System.out.print(g.math);之類的g實例的程序時,顯示為Graate1類的成員變數。

『貳』 JAVA成員變數隱藏和方法的覆蓋

從入口程序main開始看,第一句話是
Subclass Subc=new Subclass();
其作用是實例化Subclass類的一個實例出來,使用的構造函數是無參構造函數。

現在轉向看Subclass類,在這個類的無參數構造函數中代碼如下:
Subclass(){
super();//A
x=5;//B
System.out.println("in Subclass:x="+x);//②
}
可以看得見第一句使用的是super()方法,起作用是繼承父類Superclass的構造方法:
Superclass(){
x=3;
System.out.println("in Superclass:x="+x);//①
}
也就是說Subclass()方法代碼內容是如下的內容:
Subclass(){
x=3;
System.out.println("in Superclass:x="+x);//①
x=5;//B
System.out.println("in Subclass:x="+x);//②
}

所以現在這里有兩個輸出語句,結果如下:
in Superclass:x=3
in Subclass:x=5

現在返回入口程序main()方法,開始執行該方法中的第二句話:
Subc.dosomething();
這句話的作用是執行Subclass類中的dosomething方法,所以我們查看Subclass類的方法void dosomething()內容如下:

super.dosomething();
System.out.println("in Subclass.dosomething()");
System.out.println("super.x="+super.x+"\tsub.x="+x);

可以看到,第一句話super.dosomething();是繼承父類的dosomething()方法,用父類的這個方法內容替換掉這句話,void dosomething()內容如下:

System.out.println("in Superclass.dosomething()");//③
System.out.println("in Subclass.dosomething()");//④
System.out.println("super.x="+super.x+"\tsub.x="+x);//⑤

所以這里就是連續輸出三句話:
in Superclass.dosomething()
in Subclass.dosomething()
super.x=3 sub.x=5

一定要知道super的作用,super()就是使用父類的構造函數,super.屬性/s uper.方法,就是使用父類屬性/方法。

閱讀全文

與java成員變數的覆蓋相關的資料

熱點內容
cmd編譯utf8 瀏覽:276
怎麼截取app接受的數據 瀏覽:276
nrf24l01pdf 瀏覽:298
php字元串轉array 瀏覽:434
U盤分了文件夾後 瀏覽:940
javasetstring 瀏覽:837
壓縮包里文件夾是白色的 瀏覽:472
編譯鏈接知乎 瀏覽:591
php查詢按鈕 瀏覽:715
有音響游戲解壓神器 瀏覽:253
怎麼壓縮圖片jpeg 瀏覽:713
澳大利亞net程序員 瀏覽:579
程序員加班難受 瀏覽:990
如何看伺服器品牌 瀏覽:256
ecy50clp壓縮機多少W 瀏覽:755
mac終端命令怎麼保存 瀏覽:850
微信公眾號圖片壓縮 瀏覽:440
可以在安卓平板上畫畫的軟體是什麼 瀏覽:438
高盛數字加密 瀏覽:897
軟著網上能不能查到自己的源碼 瀏覽:917