最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

區(qū)分Java的方法覆蓋與變量覆蓋

 更新時(shí)間:2015年09月23日 15:28:13   投稿:lijiao  
作為初學(xué)者2個(gè)比較容易出錯(cuò)的定義,方法覆蓋和變量覆蓋。下面我們一起來(lái)看看作者如何去探討Java的方法覆蓋和變量覆蓋。

首先,我們看看關(guān)于重載,和覆蓋(重寫)的簡(jiǎn)明定義:

方法重載:如果有兩個(gè)方法的方法名相同,但參數(shù)不一致,哪么可以說(shuō)一個(gè)方法是另一個(gè)方法的重載。

方法覆蓋:如果在子類中定義一個(gè)方法,其名稱、返回類型及參數(shù)簽名正好與父類中某個(gè)方法的名稱、返回類型及參數(shù)簽名相匹配,那么可以說(shuō),子類的方法覆蓋了父類的方法

我們重點(diǎn)說(shuō)說(shuō)覆蓋問(wèn)題,以如下代碼為例:

public class People { 
 public String getName() { 
  return "people"; 
 } 
 
} 
public class Student extends People { 
  
 public String getName() { 
  return "student"; 
 } 
  
} 
public static void main(String[] args) { 
  People p=new People(); 
 System.out.println(p.getName());//運(yùn)行結(jié)果為people 
 
  Student s=new Student(); 
 System.out.println(s.getName());//運(yùn)行結(jié)果為student 
 
 People pp=new Student(); 
 System.out.println(pp.getName());//運(yùn)行結(jié)果為student 
 
 } 

上述結(jié)果說(shuō)明:student類的getName方法成功覆蓋了父類的方法

我們?cè)賮?lái)看看變量的覆蓋:

public class People { 
 protected String name="people"; 
 
  
} 
public class Student extends People { 
  
 protected String name="student"; 
   
} 
public static void main(String[] args) { 
   
     
  People p=new People(); 
  System.out.println(p.name);//運(yùn)行結(jié)果為people 
   
  Student s=new Student(); 
  System.out.println(s.name);//運(yùn)行結(jié)果為student 
   
  People pp=new Student(); 
  System.out.println(pp.name);//運(yùn)行結(jié)果為people 
 
 } 

通過(guò)運(yùn)行結(jié)果我發(fā)現(xiàn):變量的覆蓋實(shí)際上與方法的不盡相同。

用我自己的話說(shuō):變量的覆蓋最多只能算是半吊子的覆蓋。

要不然,向上轉(zhuǎn)換與不會(huì)發(fā)生數(shù)據(jù)丟失現(xiàn)象

People pp=new Student(); 
System.out.println(pp.name);//運(yùn)行結(jié)果為people 

就我個(gè)人的經(jīng)驗(yàn)來(lái)說(shuō):變量的覆蓋很容易讓人犯錯(cuò)誤.讓人感覺(jué)又回到了C++的繼承[這里不是指C++帶virtual的繼承]

最后我們?cè)賮?lái)看一段代碼:

public class People { 
 protected String name="people"; 
 public String getName() { 
  return name; 
 } 
} 
public class Student extends People { 
  
 protected String name="student"; 
 public String getName() { 
  return name; 
 } 
} 
main(String[] args) { 
   
  People p=new People(); 
  System.out.println(p.getName());//運(yùn)行結(jié)果為people 
   
  Student s=new Student(); 
  System.out.println(s.getName());//運(yùn)行結(jié)果為student 
   
  People pp=new Student(); 
  System.out.println(pp.getName());//運(yùn)行結(jié)果為student 
 
 } 

顯然,如此的覆蓋,才是對(duì)我們更有用的覆蓋,因?yàn)檫@樣才能達(dá)到:把具體對(duì)象抽象為一般對(duì)象的目的,實(shí)同多態(tài)性

以上只是我個(gè)人的看法,有不對(duì)的地方歡迎指出來(lái)討論。

相關(guān)文章

  • 詳解java動(dòng)態(tài)代理的2種實(shí)現(xiàn)方式

    詳解java動(dòng)態(tài)代理的2種實(shí)現(xiàn)方式

    目前Java開發(fā)包中包含了對(duì)動(dòng)態(tài)代理的支持,但是其實(shí)現(xiàn)只支持對(duì)接口的的實(shí)現(xiàn)。這篇文章主要介紹了詳解java動(dòng)態(tài)代理的2種實(shí)現(xiàn)方式 ,有興趣的可以了解一下。
    2016-11-11
  • 使用java實(shí)現(xiàn)http多線程斷點(diǎn)下載文件(二)

    使用java實(shí)現(xiàn)http多線程斷點(diǎn)下載文件(二)

    下載工具我想沒(méi)有幾個(gè)人不會(huì)用的吧,前段時(shí)間比較無(wú)聊,花了點(diǎn)時(shí)間用java寫了個(gè)簡(jiǎn)單的http多線程下載程序,我實(shí)現(xiàn)的這個(gè)http下載工具功能很簡(jiǎn)單,就是一個(gè)多線程以及一個(gè)斷點(diǎn)恢復(fù),當(dāng)然下載是必不可少的,需要的朋友可以參考下
    2012-12-12
  • 基于Java的界面開發(fā)詳細(xì)步驟(用戶注冊(cè)登錄)

    基于Java的界面開發(fā)詳細(xì)步驟(用戶注冊(cè)登錄)

    通過(guò)一段時(shí)間Java Web的學(xué)習(xí),寫一個(gè)簡(jiǎn)單的注冊(cè)登陸界面來(lái)做個(gè)總結(jié),這篇文章主要給大家介紹了基于Java的界面開發(fā)(用戶注冊(cè)登錄)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java之對(duì)象銷毀和finalize方法的使用

    Java之對(duì)象銷毀和finalize方法的使用

    這篇文章主要介紹了Java之對(duì)象銷毀和finalize方法的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Java的Lambda表達(dá)式和Stream流的作用以及示例

    Java的Lambda表達(dá)式和Stream流的作用以及示例

    這篇文章主要介紹了Java的Lambda表達(dá)式和Stream流簡(jiǎn)單示例,Lambda允許把函數(shù)作為一個(gè)方法的參數(shù),使用Lambda表達(dá)式可以寫出更簡(jiǎn)潔、更靈活的代碼,而其作為一種更緊湊的代碼風(fēng)格,使Java的語(yǔ)言表達(dá)能力得到了提升,需要的朋友可以參考下
    2023-05-05
  • Java多線程CountDownLatch的實(shí)現(xiàn)

    Java多線程CountDownLatch的實(shí)現(xiàn)

    本文主要介紹了Java多線程CountDownLatch的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • idea的運(yùn)行按鈕是灰色問(wèn)題及解決

    idea的運(yùn)行按鈕是灰色問(wèn)題及解決

    這篇文章主要介紹了idea的運(yùn)行按鈕是灰色問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java并發(fā)包線程池ThreadPoolExecutor的實(shí)現(xiàn)

    Java并發(fā)包線程池ThreadPoolExecutor的實(shí)現(xiàn)

    本文主要介紹了Java并發(fā)包線程池ThreadPoolExecutor的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • java導(dǎo)出生成csv文件的方法

    java導(dǎo)出生成csv文件的方法

    這篇文章主要為大家詳細(xì)介紹了java導(dǎo)出生成csv文件的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Java基于正則表達(dá)式實(shí)現(xiàn)xml文件的解析功能詳解

    Java基于正則表達(dá)式實(shí)現(xiàn)xml文件的解析功能詳解

    這篇文章主要介紹了Java基于正則表達(dá)式實(shí)現(xiàn)xml文件的解析功能,結(jié)合實(shí)例形式分析了java使用正則表達(dá)式針對(duì)xml文件節(jié)點(diǎn)的相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

英山县| 漳平市| 宝山区| 清徐县| 安宁市| 道真| 武宣县| 香港 | 玛曲县| 三门县| 年辖:市辖区| 上思县| 繁峙县| 林口县| 禹州市| 大埔县| 大姚县| 庆阳市| 新和县| 河东区| 承德市| 永嘉县| 铅山县| 南昌市| 绥中县| 集贤县| 霍林郭勒市| 唐山市| 青铜峡市| 自贡市| 凭祥市| 清河县| 盐津县| 汶川县| 桐柏县| 缙云县| 丰顺县| 榆中县| 偃师市| 行唐县| 绥滨县|