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

Java對象類型轉(zhuǎn)換實現(xiàn)方式(向上轉(zhuǎn)型與向下轉(zhuǎn)型)

 更新時間:2026年02月05日 10:41:54   作者:senxu_  
文章介紹了Java中的類型轉(zhuǎn)換、繼承和對象類型轉(zhuǎn)換的概念,以及向上轉(zhuǎn)型和向下轉(zhuǎn)型的實現(xiàn)方法和注意事項

一.概念

1.類型轉(zhuǎn)換

將一個類型強制轉(zhuǎn)換成另一個類型的過程被稱為類型轉(zhuǎn)換。

2.繼承

繼承是面向?qū)ο笳Z言中一個代碼復(fù)用的機制,Java中的繼承就是在已經(jīng)存在類的基礎(chǔ)上進行擴展,從而產(chǎn)生新的類。

已經(jīng)存在的類稱為父類(也叫基類或者超類),新產(chǎn)生的類稱為子類(也叫派生類),子類繼承了父類中的非私有屬性和可以繼承的方法(可以重寫),子類可以繼續(xù)擴展自己的屬性及方法。

3.對象類型轉(zhuǎn)換

對象類型轉(zhuǎn)換,是指存在繼承關(guān)系的對象,不是任意類型的對象。

Java語言允許某個類型的引用變量引用子類的實例,而且可以對這個引用變量進行類型轉(zhuǎn)換。

Java中引用類型之間的類型轉(zhuǎn)換(前提是兩個類是父子關(guān)系)主要有兩種,分別是向上轉(zhuǎn)型和向下轉(zhuǎn)型。

(1)向上轉(zhuǎn)型

父類引用指向子類對象為向上轉(zhuǎn)型,即通過子類對象(小范圍)實例化父類對象(大范圍),這種屬于自動轉(zhuǎn)換,形式如下:

FatherClass f = new SonClass();

使用向上轉(zhuǎn)型可以調(diào)用父類類型中的所有成員,不能調(diào)用子類類型中特有成員。

(2)向下轉(zhuǎn)型

        子類對象指向父類引用為向下轉(zhuǎn)型,即通過父類對象(大范圍)實例化子類對象(小范圍),這種屬于強制轉(zhuǎn)換,形式如下:

SonClass s = (SonClass) f; 

使用向下轉(zhuǎn)型可以調(diào)用子類類型中所有的成員。

注意:

如果父類引用對象是子類對象,那么在向下轉(zhuǎn)型的過程中是安全的;

如果父類引用對象是父類本身,那么在向下轉(zhuǎn)型的過程中是不安全的,編譯不會出錯,但是運行時會拋出Java強制類型轉(zhuǎn)換(java.lang.ClassCastException)異常,我們一般使用instanceof運算符來避免出此類錯誤。

(instanceof運算符用于判斷該運算符前面引用類型變量指向的對象是否是后面類或者是其子類、接口實現(xiàn)類創(chuàng)建的對象,如果是則返回true,否則返回false)

二.示例

//先寫一個父類
class Transport{
    String transportName = "交通工具";
    public void run(){
        System.out.println("我正在運行");
    }
}

//再給他寫一個子類
class Car extends Transport{
    String transportName = "車";
    static String transportType = "特斯拉";
    public void runType(){
        System.out.println("我在地上跑");
    }

    public static void main(String[] args) {
        Transport transport1 = new Car();  //向上轉(zhuǎn)型,將Car類型轉(zhuǎn)為Transport類型
        System.out.println(transport1.transportName);  //輸出"交通工具"
        transport1.run();                              //輸出"我正在運行"
        //但是transport1不能調(diào)用Car中的runType()方法,因為向上轉(zhuǎn)型可以調(diào)用父類類型中的所有成員,不能調(diào)用子類類型中的特有成員

        System.out.println("==============我是分割線===============");

        Transport transport2 = new Car();
        if (transport2 instanceof Car){
            Car car = (Car) transport2;  //向下轉(zhuǎn)型,將Transport類型轉(zhuǎn)為Car類型
            //car可以調(diào)用Car中所有的成員
            System.out.println(car.transportName);   //輸出"車"
            System.out.println(car.transportType);   //輸出"特斯拉"
            car.run();                               //輸出"我正在運行"
            car.runType();                           //輸出"我在地上跑"
        }

    }

}

交通工具
我正在運行
==============我是分割線===============
車
特斯拉
我正在運行
我在地上跑

總結(jié)

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

相關(guān)文章

  • SpringBoot配置嵌入式服務(wù)器的實操演示

    SpringBoot配置嵌入式服務(wù)器的實操演示

    文章介紹了Servlet、Filter和Listener在JavaWeb開發(fā)中的作用及生命周期,文章詳細(xì)說明了如何在SpringBoot中注冊Servlet、Filter和Listener,并通過實操演示驗證了它們的功能,本文給大家講解的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2025-11-11
  • java中將科學(xué)計數(shù)法轉(zhuǎn)換普通計數(shù)法的簡單方法

    java中將科學(xué)計數(shù)法轉(zhuǎn)換普通計數(shù)法的簡單方法

    下面小編就為大家?guī)硪黄猨ava中將科學(xué)計數(shù)法轉(zhuǎn)換普通計數(shù)法的簡單方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • 深入理解Java設(shè)計模式之迭代器模式

    深入理解Java設(shè)計模式之迭代器模式

    這篇文章主要介紹了JAVA設(shè)計模式之迭代器模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法

    Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法

    有時候因為新增的需求需要獲取剛剛新增的數(shù)據(jù)的自增的主鍵ID,下面這篇文章主要給大家介紹了關(guān)于Java向數(shù)據(jù)庫中插入數(shù)據(jù)后獲取自增ID的常用方法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-11-11
  • Java并發(fā) synchronized鎖住的內(nèi)容解析

    Java并發(fā) synchronized鎖住的內(nèi)容解析

    這篇文章主要介紹了Java并發(fā) synchronized鎖住的內(nèi)容解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 淺談springMVC中controller的幾種返回類型

    淺談springMVC中controller的幾種返回類型

    這篇文章主要介紹了淺談springMVC中controller的幾種返回類型,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • SpringBoot3實現(xiàn)數(shù)據(jù)備份操作的多種方法全解析

    SpringBoot3實現(xiàn)數(shù)據(jù)備份操作的多種方法全解析

    在當(dāng)今數(shù)字化時代,數(shù)據(jù)已然成為企業(yè)最為寶貴的資產(chǎn)之一,Spring Boot 3 作為一款廣受歡迎的 Java 開發(fā)框架,為我們實現(xiàn)高效、可靠的數(shù)據(jù)備份操作提供了豐富的工具與便捷的方式,下面我們就來看看具體實現(xiàn)方法吧
    2025-12-12
  • java使用Socket實現(xiàn)SMTP協(xié)議發(fā)送郵件

    java使用Socket實現(xiàn)SMTP協(xié)議發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了java使用Socket實現(xiàn)SMTP協(xié)議發(fā)送郵件的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-05-05
  • SpringBoot外部化配置示例解析

    SpringBoot外部化配置示例解析

    這篇文章主要介紹了SpringBoot外部化配置示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • Mybatis動態(tài)查詢字段及表名的實現(xiàn)

    Mybatis動態(tài)查詢字段及表名的實現(xiàn)

    本文主要介紹了Mybatis動態(tài)查詢字段及表名的實現(xiàn),通過靈活運用Mybatis提供的動態(tài)SQL功能,我們可以構(gòu)建更加靈活、高效的查詢語句,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2024-01-01

最新評論

三河市| 洪洞县| 温泉县| 武鸣县| 赤峰市| 罗江县| 日土县| 芷江| 通河县| 金门县| 原平市| 库尔勒市| 东台市| 衡东县| 龙井市| 图们市| 天长市| 南江县| 潜山县| 昭觉县| 烟台市| 平湖市| 嘉兴市| 镇江市| 景宁| 新昌县| 中卫市| 宁明县| 合肥市| 九江县| 江油市| 阳高县| 安福县| 丰都县| 鸡泽县| 望奎县| 鄂州市| 通州区| 大兴区| 丹寨县| 馆陶县|