自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

淺談Java的方法覆蓋與變量覆蓋

開(kāi)發(fā) 后端
作為初學(xué)者2個(gè)比較容易出錯(cuò)的定義,方法覆蓋和變量覆蓋。下面我們一起來(lái)看看作者如何去探討Java的方法覆蓋和變量覆蓋。

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

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

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

我們重點(diǎn)說(shuō)說(shuō)覆蓋問(wèn)題,以如下代碼為例:

  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());//運(yùn)行結(jié)果為people  
  17.     
  18.         Student s=new Student();  
  19.         System.out.println(s.getName());//運(yùn)行結(jié)果為student  
  20.     
  21.         People pp=new Student();  
  22.         System.out.println(pp.getName());//運(yùn)行結(jié)果為student  
  23.  
  24.     } 

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

我們?cè)賮?lái)看看變量的覆蓋:

  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);//運(yùn)行結(jié)果為people  
  16.           
  17.         Student s=new Student();  
  18.         System.out.println(s.name);//運(yùn)行結(jié)果為student  
  19.           
  20.         People pp=new Student();  
  21.         System.out.println(pp.name);//運(yùn)行結(jié)果為people  
  22.  
  23.     } 

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

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

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

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

就我個(gè)人的經(jīng)驗(yàn)來(lái)說(shuō):變量的覆蓋很容易讓人犯錯(cuò)誤.讓人感覺(jué)又回到了C++的繼承[這里不是指C++帶virtual的繼承]

***我們?cè)賮?lái)看一段代碼:

  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());//運(yùn)行結(jié)果為people  
  5.           
  6.         Student s=new Student();  
  7.         System.out.println(s.getName());//運(yùn)行結(jié)果為student  
  8.           
  9.         People pp=new Student();  
  10.         System.out.println(pp.getName());//運(yùn)行結(jié)果為student  
  11.  
  12.     } 

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

以上只是我個(gè)人的看法,有不對(duì)的地方歡迎指出來(lái)討論。

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

【編輯推薦】

  1. Java類變量和成員變量初始化過(guò)程
  2. JavaScript表格組件加載速度測(cè)試
  3. 5個(gè)讓人激動(dòng)的Java項(xiàng)目
  4. Java并行編程:從并行任務(wù)集獲取反饋
  5. Java反射機(jī)制初探
責(zé)任編輯:林師授 來(lái)源: kuangxiang_panpan博客
相關(guān)推薦

2010-03-30 17:54:05

無(wú)線熱點(diǎn)地區(qū)

2020-02-14 18:10:40

MySQL索引數(shù)據(jù)庫(kù)

2010-10-08 13:14:35

2021-10-12 20:56:17

Python子類父類

2009-06-17 15:25:59

Java學(xué)習(xí)

2009-05-26 09:31:00

C++重載覆蓋

2010-09-02 08:47:22

無(wú)線局域網(wǎng)蜂窩覆蓋

2022-08-25 06:27:39

vivoJaCoCo代碼覆蓋率

2009-09-09 11:28:40

Scala類

2023-11-07 00:04:53

2020-06-17 12:22:44

C覆蓋重載

2010-03-15 11:01:11

無(wú)線覆蓋

2009-03-23 09:17:00

HSDPA網(wǎng)絡(luò)規(guī)劃3G

2011-09-19 09:29:21

Java微軟Azure

2015-06-08 09:08:38

PoWiFi無(wú)線技術(shù)

2017-09-07 11:20:47

飛魚(yú)星i-Home低輻射

2012-09-21 10:30:56

Linux項(xiàng)目代碼覆蓋率

2015-06-05 09:27:13

無(wú)線WiFi

2016-01-27 09:48:44

無(wú)線覆蓋無(wú)線路由器

2010-08-27 10:34:15

DB2配置數(shù)據(jù)庫(kù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)