導航:首頁 > 編程語言 > 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成員變數的覆蓋相關的資料

熱點內容
php地址重寫 瀏覽:342
網上練瑜伽用什麼app最好 瀏覽:555
文件夾為何搜索不了 瀏覽:338
怎麼快捷刪除lol換膚文件夾 瀏覽:251
pdf填字 瀏覽:296
opencv立體匹配演算法 瀏覽:459
什麼app軟體排第一 瀏覽:321
c語言僅可以編譯么 瀏覽:792
mfc的按鈕編程 瀏覽:579
linuxnandflash驅動 瀏覽:86
電影詞典pdf 瀏覽:966
農夫山泉app登不上去是什麼原因 瀏覽:432
如何趕走程序員 瀏覽:910
用支付寶登錄阿里雲伺服器 瀏覽:877
阿里雲伺服器怎麼更改ip 瀏覽:643
pvp和普通伺服器有什麼區別 瀏覽:706
pc收銀台系統源碼 瀏覽:624
程序員老公要加班 瀏覽:961
51單片機控制的超聲波 瀏覽:827
2021去水印最新源碼 瀏覽:232