91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何解析Java的方法覆蓋與變量覆蓋

發布時間:2021-10-29 15:50:26 來源:億速云 閱讀:166 作者:柒染 欄目:編程語言

這篇文章給大家介紹如何解析Java的方法覆蓋與變量覆蓋,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

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

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

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

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

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

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

通過運行結果我發現:變量的覆蓋實際上與方法的不盡相同。

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

要不然,向上轉換與不會發生數據丟失現象

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

就我個人的經驗來說:變量的覆蓋很容易讓人犯錯誤.讓人感覺又回到了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());//運行結果為people                    Student s=new Student();          System.out.println(s.getName());//運行結果為student                    People pp=new Student();          System.out.println(pp.getName());//運行結果為student       }

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

關于如何解析Java的方法覆蓋與變量覆蓋就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

容城县| 卢湾区| 河间市| 阳高县| 额敏县| 平顶山市| 肃北| 九龙城区| 来安县| 莱西市| 大同县| 锦州市| 昌图县| 麻江县| 平舆县| 新昌县| 邵武市| 扎囊县| 枞阳县| 云安县| 读书| 始兴县| 灵寿县| 那坡县| 蛟河市| 上杭县| 鲁山县| 平塘县| 屯门区| 郧西县| 阳新县| 平邑县| 忻城县| 铜陵市| 渑池县| 仁化县| 菏泽市| 丰县| 太湖县| 开原市| 尼木县|