国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 14:58:43
字體:
供稿:網(wǎng)友

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

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

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

我們重點說說覆蓋問題,以如下代碼為例:

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());//運行結(jié)果為people    Student s=new Student();  System.out.println(s.getName());//運行結(jié)果為student   People pp=new Student();  System.out.println(pp.getName());//運行結(jié)果為student   } 

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

我們再來看看變量的覆蓋:

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);//運行結(jié)果為people      Student s=new Student();   System.out.println(s.name);//運行結(jié)果為student      People pp=new Student();   System.out.println(pp.name);//運行結(jié)果為people   } 

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

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

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

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

就我個人的經(jīng)驗來說:變量的覆蓋很容易讓人犯錯誤.讓人感覺又回到了C++的繼承[這里不是指C++帶virtual的繼承]

最后我們再來看一段代碼:

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());//運行結(jié)果為people      Student s=new Student();   System.out.println(s.getName());//運行結(jié)果為student      People pp=new Student();   System.out.println(pp.getName());//運行結(jié)果為student   } 

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

以上只是我個人的看法,有不對的地方歡迎指出來討論。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 丹巴县| 府谷县| 苍南县| 海兴县| 吐鲁番市| 马边| 乌兰浩特市| 微博| 肥西县| 六枝特区| 镇雄县| 昌黎县| 邹平县| 泰安市| 驻马店市| 息烽县| 惠州市| 福建省| 施甸县| 常宁市| 公安县| 政和县| 天气| 正安县| 鸡西市| 南城县| 格尔木市| 禄丰县| 白朗县| 新龙县| 腾冲县| 双桥区| 隆子县| 确山县| 龙岩市| 汉源县| 本溪| 明光市| 溆浦县| 沙雅县| 隆德县|