最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 多態(tài)中繼承的轉(zhuǎn)型詳解與用法分析

 更新時(shí)間:2021年10月26日 11:20:57   作者:執(zhí)久呀  
繼承是java面向?qū)ο缶幊碳夹g(shù)的一塊基石,因?yàn)樗试S創(chuàng)建分等級(jí)層次的類。繼承就是子類繼承父類的特征和行為,使得子類對(duì)象(實(shí)例)具有父類的實(shí)例域和方法,或子類從父類繼承方法,使得子類具有父類相同的行為

一、前言

前面我們學(xué)習(xí)了多態(tài)的概述和使用,現(xiàn)在我們來學(xué)習(xí)前面剩下的轉(zhuǎn)型問題。

二、轉(zhuǎn)型

🗡 向上轉(zhuǎn)型

🗡向下轉(zhuǎn)型

為什么會(huì)有轉(zhuǎn)型呢,前面我們也說到了,多態(tài)中的使用前提是有父類引用指向子類對(duì)象

還有多態(tài)的缺點(diǎn)就是不能訪問子類對(duì)象。(可以用到向下轉(zhuǎn)型訪問)

向上轉(zhuǎn)型

🗡其實(shí)多態(tài)中的父類引用指向子類對(duì)象就是向下轉(zhuǎn)型,向下轉(zhuǎn)型就是子到父。

就是將子類所申請(qǐng)的空間賦值給父類。形式: fu f=new zi();

向下轉(zhuǎn)型

🗡向下轉(zhuǎn)型的出現(xiàn)就是為了解決多態(tài)中無(wú)法訪問子類成員的問題,其實(shí)向下轉(zhuǎn)型本質(zhì)上

就是強(qiáng)轉(zhuǎn),由父到子,父類對(duì)象轉(zhuǎn)化為子類對(duì)象。形式:zi z= (zi)f ;

我們看個(gè)例子:

在fu類中

public class Fu {
  public   void show(){
        System.out.println("fu:1024程序員節(jié)");
    }
  public void play(){
      System.out.println("fu:1024不見不散");
    }
}

zi類中

public class Zi extends Fu {
    @Override
    public void show() {//重寫fu類中的show方法
        super.show();
        System.out.println("zi:1024來了呀");
    }
    public void game(){
        System.out.println("zi:寫篇博客提提神");
    }
    public void juan(){
        System.out.println("zi:全員卷王");
    }
}

新建一個(gè)測(cè)試類

public class FuZiDemo {
    public static void main(String[] args) {
        Fu f=new Zi();//向上轉(zhuǎn)型
        Zi z=(Zi)f;//向下轉(zhuǎn)型
        z.show();
        z.game();
        z.juan();
        z.play();
    }
}

通過向上和向下轉(zhuǎn)型,此時(shí)我們可以訪問子類父類全部成員

🗡 其實(shí)雖然直接創(chuàng)建子類對(duì)象是非常方便的,但是我們多態(tài)的實(shí)現(xiàn)條件之一就是有

父類引用指向子類對(duì)象(接口的多態(tài)暫時(shí)不考慮)

public class FuZiDemo {
    public static void main(String[] args) {
 
        Zi z=new Zi();//通過子類直接創(chuàng)建對(duì)象
        z.show();
        z.game();
        z.juan();
        z.play();
 
    }
}

🗡由上述結(jié)果可知,子類對(duì)象向上轉(zhuǎn)型為父類對(duì)象是不需要顯示轉(zhuǎn)換,而父類對(duì)象轉(zhuǎn)化

為子類對(duì)象時(shí),需要顯示強(qiáng)制類型轉(zhuǎn)化。

友情提示:向下轉(zhuǎn)型還有幾點(diǎn)需要注意的地方:

🗡①必須保證父類對(duì)象是子類的一個(gè)實(shí)例,否則程序報(bào)錯(cuò)。

🗡②向下轉(zhuǎn)型的對(duì)象可以訪問父類中的成員和方法,也可以訪問子類中的成員和方法。

public class Demo11 {
    public static void main(String[] args) {
     Animal a=new Dog();
      Dog g=(Dog)a;
     Cat c=(Cat)a;//??能否成功
 
    }
}

🗡上述代碼中,父類對(duì)象a引用的是子類Dog對(duì)象,而不是Cat類對(duì)象,可以將a強(qiáng)

制轉(zhuǎn)化為Dog類型,不能a強(qiáng)制轉(zhuǎn)化為Cat類型,因?yàn)橄蛳罗D(zhuǎn)型必須確保父類對(duì)象是

子類的一個(gè)實(shí)例所以這個(gè)程序不能成功,且在運(yùn)行時(shí)會(huì)出現(xiàn)轉(zhuǎn)換異常的警告。

三、instanceof運(yùn)算符

instanceof的用處

🗡由上可知,向下轉(zhuǎn)型必須確包父類對(duì)象是子類的一個(gè)實(shí)例,否則程序會(huì)異常,

instanceof 就是為了確保向下轉(zhuǎn)型不出現(xiàn)異常。instanceof運(yùn)算符用來在運(yùn)行時(shí)

指出對(duì)象是否是特定類的一個(gè)實(shí)例

instanceof的使用格式:

🗡對(duì)象名 instanceof 類名

🗡instanceof返回一個(gè)布爾值來指出這個(gè)對(duì)象是否是這個(gè)特定類或者使他的子類的

一個(gè)實(shí)例。返回true則是,反之則不是。

public class Demo11 {
    public static void main(String[] args) {
     Animal a=new Dog();
    if(a instanceof Dog){
      Dog g=(Dog)a;
    }
      if( a instanceof Cat){//判斷作用
        Cat c=(Cat)a;
      }
    }
}

🗡所以我們?cè)谶M(jìn)行向下轉(zhuǎn)型之前采用instanceof運(yùn)算符可以避免一些問題。

到此這篇關(guān)于Java 多態(tài)中繼承的轉(zhuǎn)型詳解與用法分析的文章就介紹到這了,更多相關(guān)Java 多態(tài)中繼承的轉(zhuǎn)型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java 匯編JVM編寫jasmin程序的操作方法

    Java 匯編JVM編寫jasmin程序的操作方法

    這篇文章主要介紹了Java 匯編JVM編寫jasmin程序的操作方法,本文通過幾個(gè)示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • Java實(shí)現(xiàn)文本查重的方法詳解

    Java實(shí)現(xiàn)文本查重的方法詳解

    Ansj 是一個(gè)開源的 Java 中文分詞工具,基于中科院的 ictclas 中文分詞算法,采用隱馬爾科夫模型(HMM),比其他常用的開源分詞工具(如 MMseg4j)的分詞準(zhǔn)確率更高,下面我們就來使用它實(shí)現(xiàn)文本查重功能吧
    2024-04-04
  • Spring Cloud分布式定時(shí)器之ShedLock的實(shí)現(xiàn)

    Spring Cloud分布式定時(shí)器之ShedLock的實(shí)現(xiàn)

    這篇文章主要介紹了Spring Cloud分布式定時(shí)器之ShedLock的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • Java8 Predicate花樣用法詳解

    Java8 Predicate花樣用法詳解

    本文主要介紹了Java 8 Predicate花樣用法詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 教你如何區(qū)分Spring與Structs2中間件

    教你如何區(qū)分Spring與Structs2中間件

    這篇文章主要介紹了教你如何區(qū)分Spring與Structs2中間件,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Java 分析并解決內(nèi)存泄漏的實(shí)例

    Java 分析并解決內(nèi)存泄漏的實(shí)例

    這篇文章主要介紹了Java 分析并解決內(nèi)存泄漏的實(shí)例,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下
    2020-08-08
  • Java concurrency之AtomicLongArray原子類_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java concurrency之AtomicLongArray原子類_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java concurrency之AtomicLongArray原子類的相關(guān)知識(shí),感興趣的朋友參考下吧
    2017-06-06
  • springboot+mybatis報(bào)錯(cuò)找不到實(shí)體類的問題

    springboot+mybatis報(bào)錯(cuò)找不到實(shí)體類的問題

    這篇文章主要介紹了springboot+mybatis報(bào)錯(cuò)找不到實(shí)體類的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • JAVA Stack詳細(xì)介紹和示例學(xué)習(xí)

    JAVA Stack詳細(xì)介紹和示例學(xué)習(xí)

    JAVA Stack是棧。它的特性是:先進(jìn)后出(FILO, First In Last Out)。
    2013-11-11
  • 利用ClasserLoader實(shí)現(xiàn)jar包加載并調(diào)用里面的方法

    利用ClasserLoader實(shí)現(xiàn)jar包加載并調(diào)用里面的方法

    classloader即是類加載,虛擬機(jī)把描述類的數(shù)據(jù)從class字節(jié)碼文件加載到內(nèi)存,并對(duì)數(shù)據(jù)進(jìn)行檢驗(yàn)、轉(zhuǎn)換解析和初始化,了解java的類加載機(jī)制,可以快速解決運(yùn)行時(shí)的各種加載問題并快速定位其背后的本質(zhì)原因,本文介紹了如何利用ClasserLoader來實(shí)現(xiàn)jar包加載并調(diào)用里面的方法
    2024-09-09

最新評(píng)論

广安市| 拜泉县| 屏东县| 温宿县| 海城市| 揭东县| 林甸县| 新竹市| 潢川县| 武宣县| 公主岭市| 五台县| 高尔夫| 夏津县| 五原县| 临朐县| 乐山市| 韩城市| 彰化县| 广州市| 彝良县| 乐东| 肥城市| 介休市| 甘谷县| 河南省| 邓州市| 铁岭县| 怀安县| 全南县| 通化县| 西和县| 灵武市| 襄樊市| 体育| 宾川县| 桐梓县| 吐鲁番市| 遵义市| 辽宁省| 积石山|