欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中方法的重寫與成員變量的隱藏

 更新時(shí)間:2017年11月30日 14:26:04   投稿:mrr  
這篇文章討論了Java面向?qū)ο蟾拍钪幸粋€(gè)基本的概念–Field Hiding(隱藏成員變量),文中給大家介紹了java中的重寫知識,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧

這篇文章討論了Java面向?qū)ο蟾拍钪幸粋€(gè)基本的概念–Field Hiding(隱藏成員變量)

在討論這個(gè)問題之前,我們看一段特別特別簡單的代碼,請問一下方法的數(shù)據(jù)結(jié)果是什么?

/** 
 * @author Hollis 17/9/27. 
 */ public class FieldOverriding { 
 public static void main(String[] args) { 
 Sub c1 = new Sub(); 
 System.out.println(" c1.s : " + c1.s); 
 System.out.println(" c1.say : " + c1.say()); 
 Super c2 = new Sub(); 
 System.out.println(" c2.s : " + c2.s); 
 System.out.println(" c2.say : " + c2.say()); 
 } 
} 
class Super { 
 String s = "Super"; 
 String say(){ 
 return "hello Super"; 
 } 
} 
class Sub extends Super { 
 String s = "Sub"; 
 String say(){ 
 return "hello Sub"; 
 } 
}

輸出結(jié)果:

 c1.s : Sub 
 c1.say : hello Sub 
 c2.s : Super 
 c2.say : hello Sub

和你想的一樣嗎,如果一樣的話,那就不用繼續(xù)往下看了。因?yàn)檫@個(gè)本來就不難,知道了就行。

Java中的重寫

在深入理解Java中的重寫和重載中我們介紹過:

在Java的子類與父類中有兩個(gè)名稱、參數(shù)列表都相同的方法的情況。由于他們具有相同的方法簽名,所以子類中的新方法將覆蓋父類中原有的方法。

正式因?yàn)镴ava在繼承中有方法的重寫,所以,這也體現(xiàn)了Java的動態(tài)多態(tài)性。

成員變量在Java中能夠被重寫么?

上面的Java的重寫介紹中明確的說了,重寫,指的是方法。并沒有提到成員變量。通過上面的例子,其實(shí)我們也可以發(fā)現(xiàn),成員變量并沒有被重寫。

所以,Java中,成員變量并不會被重寫。這里就有另外一個(gè)詞:隱藏。

Java中成員變量的隱藏

Java文檔中對隱藏域的定義:

Within a class, a field that has the same name as a field in the superclass hides the superclass's field, even if their types are different. Within the subclass, the field in the superclass cannot be referenced by its simple name. Instead, the field must be accessed through super. Generally speaking, we don't recommend hiding fields as it makes code difficult to read.

翻譯成中文:

在一個(gè)類中,子類中的成員變量如果和父類中的成員變量同名,那么即使他們類型不一樣,只要名字一樣。父類中的成員變量都會被隱藏。在子類中,父類的成員變量不能被簡單的用引用來訪問。而是,必須從父類的引用獲得父類被隱藏的成員變量,一般來說,我們不推薦隱藏成員變量,因?yàn)檫@樣會使代碼變得難以閱讀。

其實(shí),簡單來說,就是子類不會去重寫覆蓋父類的成員變量,所以成員變量的訪問不能像方法一樣使用多態(tài)去訪問。

如何訪問被隱藏的成員變量

其實(shí),通過前面的例子,和剛剛關(guān)于成員變量的介紹,其實(shí)你已經(jīng)知道了如何訪問被隱藏的成員變量。 就是使用父類的引用來訪問成員變量,如Super c2 = new Sub(); System.out.println(" c2.s : " + c2.s);。或者使用System.out.println(((Super)c1).s);

總結(jié)

以上所述是小編給大家介紹的Java中方法的重寫與成員變量的隱藏,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Deepin系統(tǒng)安裝eclipse2021-03及CDT插件的安裝教程

    Deepin系統(tǒng)安裝eclipse2021-03及CDT插件的安裝教程

    本教程教大家deepin20.1操作系統(tǒng)上安裝eclipse_2021-03版的詳細(xì)步驟及CDT插件的安裝方法,通過圖文展示的非常明了,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-06-06
  • Spring Boot示例分析講解自動化裝配機(jī)制核心注解

    Spring Boot示例分析講解自動化裝配機(jī)制核心注解

    這篇文章主要分析了Spring Boot 自動化裝配機(jī)制核心注解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-07-07
  • springboot創(chuàng)建攔截器過程圖解

    springboot創(chuàng)建攔截器過程圖解

    這篇文章主要介紹了springboot創(chuàng)建攔截器過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 在Java編程中定義方法

    在Java編程中定義方法

    這篇文章主要介紹了在Java編程中定義方法,是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • 詳解Springboot中的異步、定時(shí)、郵件任務(wù)

    詳解Springboot中的異步、定時(shí)、郵件任務(wù)

    這篇文章主要介紹了Springboot中的異步、定時(shí)、郵件任務(wù),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • 淺析Java中的Caffeine緩存源碼

    淺析Java中的Caffeine緩存源碼

    這篇文章主要介紹了淺析Java中的Caffeine緩存源碼,Caffeine是一個(gè)Java開發(fā)的高性能緩存庫,它提供了一種簡單而強(qiáng)大的方式來管理內(nèi)存中的緩存數(shù)據(jù),Caffeine的設(shè)計(jì)目標(biāo)是提供快速、高效的緩存訪問,同時(shí)保持簡單易用的API,本文針對其部分源碼做出解析,需要的朋友可以參考下
    2023-10-10
  • IDEA的崛起自己定義快捷生成代碼塊的詳細(xì)步驟

    IDEA的崛起自己定義快捷生成代碼塊的詳細(xì)步驟

    這篇文章主要介紹了IDEA的崛起自己定義快捷生成代碼塊的詳細(xì)步驟,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-12-12
  • Java如何將字符串String轉(zhuǎn)換為整型Int

    Java如何將字符串String轉(zhuǎn)換為整型Int

    這篇文章主要介紹了Java如何將字符串String轉(zhuǎn)換為整型Int,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • 因BigDecimal類型數(shù)據(jù)引出的問題詳析

    因BigDecimal類型數(shù)據(jù)引出的問題詳析

    Java在java.math包中提供的API類BigDecimal,用來對超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算,下面這篇文章主要給大家介紹了因BigDecimal類型數(shù)據(jù)引出的問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • java如何刪除以逗號隔開的字符串中某一個(gè)值

    java如何刪除以逗號隔開的字符串中某一個(gè)值

    這篇文章主要介紹了java如何刪除以逗號隔開的字符串中某一個(gè)值,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06

最新評論