欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

區(qū)分Java的方法覆蓋與變量覆蓋

 更新時(shí)間:2015年09月23日 15:28:13   投稿:lijiao  
作為初學(xué)者2個(gè)比較容易出錯(cuò)的定義,方法覆蓋和變量覆蓋。下面我們一起來看看作者如何去探討Java的方法覆蓋和變量覆蓋。

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

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

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

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

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

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

我們?cè)賮砜纯醋兞康母采w:

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

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

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

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

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

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

最后我們?cè)賮砜匆欢未a:

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

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

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

相關(guān)文章

  • Java 高并發(fā)七:并發(fā)設(shè)計(jì)模型詳解

    Java 高并發(fā)七:并發(fā)設(shè)計(jì)模型詳解

    本文主要介紹Java高并發(fā) 并發(fā)設(shè)計(jì)模型的知識(shí),這里主要講解 1. 什么是設(shè)計(jì)模式 2. 單例模式 3. 不變模式 4. Future模式 5. 生產(chǎn)者消費(fèi)者,有需要的小伙伴可以參考下
    2016-09-09
  • 解讀@NotNull和@NonNull的區(qū)別及使用

    解讀@NotNull和@NonNull的區(qū)別及使用

    這篇文章主要介紹了解讀@NotNull和@NonNull的區(qū)別及使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2023-01-01
  • Java 生成PDF文檔的示例代碼

    Java 生成PDF文檔的示例代碼

    這篇文章主要介紹了Java 生成PDF文檔的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-08-08
  • Spring Boot加載配置文件的完整步驟

    Spring Boot加載配置文件的完整步驟

    這篇文章主要給大家介紹了關(guān)于Spring Boot加載配置文件的完整步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 用html css javascript打造自己的RIA圖文教程

    用html css javascript打造自己的RIA圖文教程

    用html&css&javascript打造自己的RIA之一,包括了配置等
    2009-07-07
  • (starters)springboot-starter整合阿里云datahub方式

    (starters)springboot-starter整合阿里云datahub方式

    這篇文章主要介紹了(starters)springboot-starter整合阿里云datahub方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫默認(rèn)值操作

    Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫默認(rèn)值操作

    這篇文章主要介紹了Spring?boot?Jpa添加對(duì)象字段使用數(shù)據(jù)庫默認(rèn)值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java常用正則表達(dá)式驗(yàn)證工具類RegexUtils.java

    Java常用正則表達(dá)式驗(yàn)證工具類RegexUtils.java

    相信大家對(duì)正則表達(dá)式一定都有所了解和研究,這篇文章主要為大家分享了Java 表單注冊(cè)常用正則表達(dá)式驗(yàn)證工具類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Java 高并發(fā)的三種實(shí)現(xiàn)案例詳解

    Java 高并發(fā)的三種實(shí)現(xiàn)案例詳解

    這篇文章主要介紹了Java 高并發(fā)的三種實(shí)現(xiàn)案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Java中泛型使用的簡單方法介紹

    Java中泛型使用的簡單方法介紹

    這篇文章主要給大家介紹了關(guān)于Java中泛型使用的簡單方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論