日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺談Java的方法覆蓋與變量覆蓋

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

站在用戶的角度思考問題,與客戶深入溝通,找到吉縣網(wǎng)站設計與吉縣網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站建設、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名注冊、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋吉縣地區(qū)。

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

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

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

 
 
 
  1. public class People {  
  2.     public String getName() {  
  3.         return "people";  
  4.     }  
  5.  
  6. }  
  7. public class Student extends People {  
  8.       
  9.     public String getName() {  
  10.         return "student";  
  11.     }  
  12.       
  13. }  
  14. public static void main(String[] args) {  
  15.         People p=new People();  
  16.         System.out.println(p.getName());//運行結果為people  
  17.     
  18.         Student s=new Student();  
  19.         System.out.println(s.getName());//運行結果為student  
  20.     
  21.         People pp=new Student();  
  22.         System.out.println(pp.getName());//運行結果為student  
  23.  
  24.     } 

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

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

 
 
 
  1. public class People {  
  2.     protected String name="people";  
  3.  
  4.       
  5. }  
  6. public class Student extends People {  
  7.       
  8.     protected String name="student";  
  9.           
  10. }  
  11. public static void main(String[] args) {  
  12.           
  13.                   
  14.         People p=new People();  
  15.         System.out.println(p.name);//運行結果為people  
  16.           
  17.         Student s=new Student();  
  18.         System.out.println(s.name);//運行結果為student  
  19.           
  20.         People pp=new Student();  
  21.         System.out.println(pp.name);//運行結果為people  
  22.  
  23.     } 

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

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

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

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

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

***我們再來看一段代碼:

 
 
 
  1. public class People {  
  2.     protected String name="people";  
  3.     public String getName() {  
  4.         return name;  
  5.     }  
  6. }  
  7. public class Student extends People {  
  8.       
  9.     protected String name="student";  
  10.     public String getName() {  
  11.         return name;  
  12.     }  
  13. }  
 
 
 
  1. main(String[] args) {  
  2.           
  3.         People p=new People();  
  4.         System.out.println(p.getName());//運行結果為people  
  5.           
  6.         Student s=new Student();  
  7.         System.out.println(s.getName());//運行結果為student  
  8.           
  9.         People pp=new Student();  
  10.         System.out.println(pp.getName());//運行結果為student  
  11.  
  12.     } 

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

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

原文鏈接:http://blog.csdn.net/kuangxiang_panpan/article/details/7443046

【編輯推薦】

  1. Java類變量和成員變量初始化過程
  2. JavaScript表格組件加載速度測試
  3. 5個讓人激動的Java項目
  4. Java并行編程:從并行任務集獲取反饋
  5. Java反射機制初探

網(wǎng)站標題:淺談Java的方法覆蓋與變量覆蓋
URL分享:http://m.5511xx.com/article/djgsiss.html