程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 辨別Java的辦法籠罩與變量籠罩

辨別Java的辦法籠罩與變量籠罩

編輯:關於JAVA

辨別Java的辦法籠罩與變量籠罩。本站提示廣大學習愛好者:(辨別Java的辦法籠罩與變量籠罩)文章只能為提供參考,不一定能成為您想要的結果。以下是辨別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 
 
 } 

明顯,如斯的籠罩,才是對我們更有效的籠罩,由於如許能力到達:把詳細對象籠統為普通對象的目標,實同多態性

以上只是我小我的意見,有纰謬的處所迎接指出來評論辯論。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved