欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

千鋒扣丁學(xué)堂Java培訓(xùn)之多態(tài)用法與注意點(diǎn)實(shí)例分析

2019-08-26 13:37:07 4227瀏覽

今天千鋒扣丁學(xué)堂Java培訓(xùn)老師給大家分享一篇關(guān)于Java多態(tài)用法與注意點(diǎn)實(shí)例分析的詳細(xì)介紹,下面我們一起來看一下吧。



一、點(diǎn)睛

向上轉(zhuǎn)型:或者稱為向父類轉(zhuǎn)型。父類的對(duì)象通過子類對(duì)象實(shí)例化,實(shí)際上就是對(duì)象的向上轉(zhuǎn)型。向上轉(zhuǎn)型不需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,但是向上轉(zhuǎn)型會(huì)丟失精度。

向下轉(zhuǎn)型:或者稱為向子類轉(zhuǎn)型。也就是說父類對(duì)象可以轉(zhuǎn)換為子類對(duì)象,但是,此時(shí)必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換。

向上轉(zhuǎn)型時(shí),父類對(duì)象所能看見的方法依然是本類之中定義的方法(即被子類覆蓋的方法)。如果子類擴(kuò)充了一些新的方法,父類是看不見的。

二、父類對(duì)象找不到子類的擴(kuò)充方法

1、代碼

class baseClass
{
  public void print()
  {
    System.out.println("*****--父類baseClass:public void print(){}") ;
  }
}
class subClass extends baseClass
{
  public void print() // 方法覆寫
  {
    System.out.println("#####--子類subClass:public void print(){}") ;
  }
  public void getB() // 此方法為子類擴(kuò)充的功能
  {
    System.out.println("#####--子類subClass:public void getB(){},B類擴(kuò)充方法。") ;
  }
}
public class NewMethodTest
{
  public static void main(String args[])
  {
    baseClass baseObj = new subClass() ; // 實(shí)例化子類對(duì)象
    baseObj.print() ;
    baseObj.getB() ; // 這個(gè)方法父類無法找到
  }
}

2、運(yùn)行

編譯失敗

3、說明

盡管父類對(duì)象baseObj的實(shí)例化依靠子類完成,但是它能夠看見的還是自己本類所定義的方法名稱,如果方法被子類覆寫了,則調(diào)用的方法體也是被子類覆寫過的方法。

三、向下轉(zhuǎn)型

1、代碼

class baseClass
{
  public void print()
  {
    System.out.println("*****--父類baseClass:public void print(){}") ;
  }
}
class subClass extends baseClass
{
  public void print() // 方法覆寫
  {
    System.out.println("#####--子類subClass:print()") ;
  }
  public void getB() // 此方法為子類擴(kuò)充的功能
  {
    System.out.println("#####--子類subClass:getB(),子類擴(kuò)充方法。") ;
  }
}
public class DownCastTest
{
  public static void main(String args[])
  {
    baseClass baseObj = new subClass() ; // 實(shí)例化子類對(duì)象
    baseObj.print() ;   //調(diào)用子類subClass的 print()
    subClass subObj = (subClass) baseObj ; // 向下轉(zhuǎn)型,強(qiáng)制完成
    subObj.getB() ; // 這個(gè)方法父類無法找到,但子類對(duì)象可以找到
  }
}

2、運(yùn)行

#####--子類subClass:print()
#####--子類subClass:getB(),子類擴(kuò)充方法。

3、說明

在形式上,類定義的對(duì)象只能看到自己所屬類中的成員,雖然通過向上類型轉(zhuǎn)換,子類對(duì)象可以給父類對(duì)象賦值,但父類對(duì)象也僅能看到在子類中被覆蓋的成員(這些方法也在父類定義過了),父類對(duì)象無法看到子類的新擴(kuò)充方法。

四、隱藏

1、點(diǎn)睛

在某些場(chǎng)景下,我們不希望父類的方法被子類方法覆寫,即子類實(shí)例化后會(huì)調(diào)用父類的方法,而不是子類的方法,這種情況要用到隱藏。被關(guān)鍵字static修飾的靜態(tài)方法是不能被覆蓋的,Java中就是利用這一特性達(dá)到隱藏的效果。

2、代碼

class Father
{
  public static void overWritting()
  {
    System.out.println("#####--Father method");
  }
}
class Son extends Father
{
  public static void overWritting()
  {
    System.out.println("*****--Son method");
  }
}
public class HideSubClass
{
  public static void main(String args[])
  {
    Father dad  = new Son();
    dad.overWritting();
    Father.overWritting();
    Son.overWritting();
  }
}

3、運(yùn)行

#####--Father method
#####--Father method
*****--Son method

以上就是關(guān)于千鋒扣丁學(xué)堂Java培訓(xùn)之多態(tài)用法與注意點(diǎn)實(shí)例分析的全部?jī)?nèi)容,希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢。想要學(xué)好Java開發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專業(yè)老師制定的Java學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Java課程體系和Java視頻教程供大家學(xué)習(xí),想要學(xué)好Java開發(fā)技術(shù)的小伙伴快快行動(dòng)吧??劭鄱W(xué)堂Java技術(shù)交流群:850353792。


                          JavaEE/微服務(wù)/源碼解析/分布式/企業(yè)級(jí)架構(gòu)【VIP體驗(yàn)課】


     【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】        【掃碼進(jìn)入JavaEE/微服務(wù)VIP免費(fèi)公開課】  



查看更多關(guān)于“Java開發(fā)資訊”的相關(guān)文章>>

標(biāo)簽: Java培訓(xùn) Java視頻教程 Java多線程 Java面試題 Java學(xué)習(xí)視頻 springBoot項(xiàng)目

熱門專區(qū)

暫無熱門資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢熱線

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部