国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 沅陵县| 吕梁市| 新乡市| 阿荣旗| 驻马店市| 莆田市| 白城市| 宁城县| 麻栗坡县| 齐齐哈尔市| 乌鲁木齐市| 武穴市| 黄陵县| 徐州市| 阿合奇县| 赤壁市| 苏尼特左旗| 瑞安市| 金湖县| 鄱阳县| 阿巴嘎旗| 梅州市| 永嘉县| 工布江达县| 略阳县| 昌图县| 靖州| 成武县| 云林县| 舒兰市| 堆龙德庆县| 应城市| 和田市| 察雅县| 和林格尔县| 滨州市| 金堂县| 原阳县| 南川市| 玉林市| 新竹县|