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

Java向上轉(zhuǎn)型和向下轉(zhuǎn)型的區(qū)別說明

 更新時間:2022年06月10日 09:16:30   作者:doublewe  
這篇文章主要介紹了Java向上轉(zhuǎn)型和向下轉(zhuǎn)型的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

向上轉(zhuǎn)型和向下轉(zhuǎn)型的區(qū)別

前言:

  • 向上轉(zhuǎn)型:父類引用類型指向了子類的實(shí)例對象,此時無法使用子類里的成員變量以及方法。
  • 向下轉(zhuǎn)型:通過引用類型強(qiáng)轉(zhuǎn),恢復(fù)了子類的成員變量以及方法。

1.代碼實(shí)現(xiàn)

可以發(fā)現(xiàn),父類雖然指向了子類的實(shí)例對象,但是并不能調(diào)用子類對象的方法,編譯器報錯。此時我們可以看作被隱藏了,那么怎樣才可以把被隱藏的方法放出來呢?此時就需要向下轉(zhuǎn)型。

2.實(shí)現(xiàn)向下轉(zhuǎn)型

將a強(qiáng)轉(zhuǎn)為Son引用類型。

((Son)a).sleep();   //調(diào)用子類的sleep方法

3.此時執(zhí)行程序

成功向下轉(zhuǎn)型,那么這樣有什么作用呢?

其實(shí),無論是上轉(zhuǎn)還是下轉(zhuǎn)都是為了讓類的使用范圍和適用范圍發(fā)生變化,以便操作不同范圍的變量或者方法。

這樣其實(shí)就是一個java的繼承多態(tài),利于程序擴(kuò)展。

我們需要這種設(shè)計方式,才會寫出更易維護(hù)、簡潔的代碼。

簡單認(rèn)識向上轉(zhuǎn)型和向下轉(zhuǎn)型

向上轉(zhuǎn)型:父類引用指向子類對象

例如:子類student繼承了父類person

Person person = new Student();

向上轉(zhuǎn)型后的變化

關(guān)于方法:person可以調(diào)用子類和父類公用的方法(如果子類重寫了父類的方法,則調(diào)用子類的方法),子類特有的方法無法調(diào)用。

關(guān)于屬性: person可以調(diào)用父類的屬性,不可以調(diào)用子類的屬性。

向上轉(zhuǎn)型的作用

減少一些重復(fù)的代碼

對象實(shí)例化的時候可以根據(jù)不同需求實(shí)例化不同的對象

向下轉(zhuǎn)型:子類引用指向父類對象

Father f=new Son() //先向上轉(zhuǎn)型
Son s=(Son) f;//再進(jìn)行向下轉(zhuǎn)型,進(jìn)行強(qiáng)制轉(zhuǎn)換,子類引用s,父類引用f

向下轉(zhuǎn)型的條件:先向上轉(zhuǎn)型,再向下轉(zhuǎn)型。沒有經(jīng)過向上轉(zhuǎn)型,會提示編譯錯誤。

向下轉(zhuǎn)型后的變化

關(guān)于方法:可以調(diào)用子類的所有方法,和屬性,類型轉(zhuǎn)為子類

關(guān)于屬性:調(diào)用的屬性為子類的屬性。

向下轉(zhuǎn)型的作用:向上轉(zhuǎn)型時 ,會遺失子類對象獨(dú)有的其他方法;可以通過向下轉(zhuǎn)型在重新轉(zhuǎn)回。

這種轉(zhuǎn)型可能存在轉(zhuǎn)型失敗地風(fēng)險,因為父類地范圍更廣,如果不確定父類對象就是該子類的對象,不推薦使用向下轉(zhuǎn)型。

Person person = new Student();
Teacher teacher = (Teacher) person; // 不安全

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java重寫(@Override)介紹以及舉例說明

    java重寫(@Override)介紹以及舉例說明

    這篇文章主要給大家介紹了關(guān)于java重寫(@Override)介紹以及舉例說明的相關(guān)資料,在Java中@Override注解用于表示方法重寫(覆蓋)了父類的方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • Java利用線程工廠監(jiān)控線程池的實(shí)現(xiàn)示例

    Java利用線程工廠監(jiān)控線程池的實(shí)現(xiàn)示例

    這篇文章主要介紹了Java利用線程工廠監(jiān)控線程池的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • javaweb圖書商城設(shè)計之用戶模塊(1)

    javaweb圖書商城設(shè)計之用戶模塊(1)

    這篇文章主要介紹了javaweb圖書商城設(shè)計之用戶模塊的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • java底層AQS實(shí)現(xiàn)類ReentrantLock鎖的構(gòu)成及源碼解析

    java底層AQS實(shí)現(xiàn)類ReentrantLock鎖的構(gòu)成及源碼解析

    本章我們就要來學(xué)習(xí)一下第一個?AQS?的實(shí)現(xiàn)類:ReentrantLock,看看其底層是如何組合?AQS?,實(shí)現(xiàn)了自己的那些功能,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • java 日期各種格式之間的相互轉(zhuǎn)換實(shí)例代碼

    java 日期各種格式之間的相互轉(zhuǎn)換實(shí)例代碼

    這篇文章主要介紹了java 日期各種格式之間的相互轉(zhuǎn)換實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • druid連接泄露故障全面分析

    druid連接泄露故障全面分析

    這篇文章主要介紹了druid連接泄露故障全面分析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • spring boot項目同時傳遞參數(shù)和文件的多種方式代碼演示

    spring boot項目同時傳遞參數(shù)和文件的多種方式代碼演示

    這篇文章主要介紹了spring boot項目同時傳遞參數(shù)和文件的多種方式,在開發(fā)接口中,遇到了需要同時接收參數(shù)和文件的情況,可以有多種方式實(shí)現(xiàn)文件+參數(shù)的接收,這里基于spring boot 3 + vue 3 + axios,做一個簡單的代碼演示,需要的朋友可以參考下
    2023-06-06
  • Vue結(jié)合Springboot實(shí)現(xiàn)用戶列表單頁面(前后端分離)

    Vue結(jié)合Springboot實(shí)現(xiàn)用戶列表單頁面(前后端分離)

    本文主要介紹了Vue結(jié)合Springboot實(shí)現(xiàn)用戶列表單頁面,可以實(shí)現(xiàn)簡單的查詢,刪除,修改,和添加用戶信息功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 如何在Java中獲取當(dāng)前年份(實(shí)例代碼)

    如何在Java中獲取當(dāng)前年份(實(shí)例代碼)

    在Java語言中獲取當(dāng)前年份有幾種方法:使用java.util包下的Calendar類,使用java.time包下的LocalDate類或者使用java.text包下的SimpleDateFormat類,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-11-11
  • String轉(zhuǎn)BigDecimal,BigDecimal常用操作,以及避免踩坑記錄

    String轉(zhuǎn)BigDecimal,BigDecimal常用操作,以及避免踩坑記錄

    這篇文章主要介紹了String轉(zhuǎn)BigDecimal,BigDecimal常用操作,以及避免踩坑記錄,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論