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

Java向上向下轉(zhuǎn)型詳解

 更新時(shí)間:2022年09月19日 08:36:56   作者:#define微光  
這篇文章主要為大家詳細(xì)介紹了Java向上向下轉(zhuǎn)型,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Java之所以可以向上向下轉(zhuǎn)型是依據(jù)Java三大特性之一的多態(tài)性,而轉(zhuǎn)型就是對(duì)象的多態(tài)性,需要注意的是轉(zhuǎn)型的前提是方法覆寫

轉(zhuǎn)型:

[自動(dòng),90%] (1)對(duì)象的向上轉(zhuǎn)型:父類 父類對(duì)象 = 子類實(shí)例

[強(qiáng)制,1%]   (2)對(duì)象的向下轉(zhuǎn)型:子類 子類對(duì)象 = (子類) 父類實(shí)例

觀察向上轉(zhuǎn)型

package TestOverride;
?
/**
?* Author:weiwei
?* description:向上轉(zhuǎn)型
?* Creat:2019/3/29
?**/
?
class Person{
? ? public void print(){
? ? ? ? System.out.println("1.我是爸爸!");
? ? }
}
class Student extends Person{
? ? public void print(){
? ? ? ? System.out.println("2.我是兒子!");
? ? }
}
public class Test {
? ? public static void main(String[] args) {
? ? ? ? Person per = new Student();//向上轉(zhuǎn)型
? ? ? ? per.print();
? ? }
}

運(yùn)行結(jié)果:

2.我是兒子!
 
Process finished with exit code 0

運(yùn)行結(jié)果只打印了子類print方法的內(nèi)容,因?yàn)橄蛏限D(zhuǎn)型將子類對(duì)象變?yōu)楦割悓?duì)象,調(diào)用了子類的print方法

向下轉(zhuǎn)型指的是將父類對(duì)象變?yōu)樽宇悓?duì)象,但在這之前我們需要明確:為什么我們需要向下轉(zhuǎn)型?當(dāng)你需要子類擴(kuò)
充操作的時(shí)候就要采用向下轉(zhuǎn)型 

觀察向下轉(zhuǎn)型(存在安全隱患)

package TestOverride;
?
/**
?* Author:weiwei
?* description:向下轉(zhuǎn)型
?* Creat:2019/3/29
?**/
?
class Person{
? ? public void print(){
? ? ? ? System.out.println("1.我是爸爸!");
? ? }
}
class Student extends Person{
? ? public void print(){
? ? ? ? System.out.println("2.我是兒子!");
? ? }
? ? public void fun(){
? ? ? ? System.out.println("只有兒子有!");
? ? }
}
public class Test {
? ? public static void main(String[] args) {
? ? ? ? Person per = new Person();
? ? ? ? per.print();
? ? ? ? //這個(gè)時(shí)候父類能夠調(diào)用的方法都是本類定義好的方法
? ? ? ? //所以并沒有Student類中的fun()方法,那么只能夠進(jìn)行向下轉(zhuǎn)型處理
? ? ? ? Student stu = (Student) per;
? ? ? ? stu.fun();
? ? }
}

并不是所有的父類對(duì)象都可以向下轉(zhuǎn)型,如果要想進(jìn)行向下操作之前,一定要首先發(fā)生向上轉(zhuǎn)型,否則在轉(zhuǎn)型時(shí)會(huì)出現(xiàn) ClassCastException 。
觀察錯(cuò)誤轉(zhuǎn)型

Person per = new Person(); //父類對(duì)象
Student stu = (Student) per; //強(qiáng)轉(zhuǎn)

如果向下轉(zhuǎn)型存在安全隱患,那么如何轉(zhuǎn)型才靠譜呢?最好的做法就是先進(jìn)行判斷,而后在進(jìn)行轉(zhuǎn)型,那么就可以依instanceo關(guān)鍵字實(shí)現(xiàn),該關(guān)鍵字語(yǔ)法如下:

子類對(duì)象 instanceof類,返回boolean類型

觀察instanceof操作

Person per = new Student();
? ? ? ? System.out.println(per instanceof Person);
? ? ? ? System.out.println(per instanceof Student);
? ? ? ? if (per instanceof Student) { //避免ClassCastException
? ? ? ? ? ?Student stu = (Student) per ;
? ? ? ? ? ?stu.fun();
? ? ? ?}

這種轉(zhuǎn)換到底有什么意義?

要求定義一個(gè)方法,這個(gè)方法可以接收Person類的所有子類實(shí)例,并調(diào)用Person類的方法。

package TestOverride;
?
/**
?* Author:weiwei
?* description:向下轉(zhuǎn)型
?* Creat:2019/3/29
?**/
?
class Person{
? ? public void print(){
? ? ? ? System.out.println("1.我是人類!");
? ? }
}
class Student extends Person{
? ? public void print(){
? ? ? ? System.out.println("2.我是學(xué)生!");
? ? }
}
class Worker extends Person{
? ? public void print(){
? ? ? ? System.out.println("3.我是工人!");
? ? }
}
public class Test {
? ? public static void main(String[] args) {
? ? ? ? whoAre(new Student());
? ? ? ? whoAre(new Worker());
? ? }
? ? public static void whoAre(Person per){
? ? ? ? per.print();
? ? }
}

通過(guò)以上分析就可以清楚,對(duì)象的向上轉(zhuǎn)型有一個(gè)最為核心的用途:操作參數(shù)統(tǒng)一。

多態(tài)性總結(jié):

  • 對(duì)象多態(tài)性的核心在于方法的覆寫。
  • 通過(guò)對(duì)象的向上轉(zhuǎn)型可以實(shí)現(xiàn)接收參數(shù)的統(tǒng)一,向下轉(zhuǎn)型可以實(shí)現(xiàn)子類擴(kuò)充方法的調(diào)用(一般不操作向下轉(zhuǎn)型,有安全隱患)。
  • 兩個(gè)沒有關(guān)系的類對(duì)象是不能夠進(jìn)行轉(zhuǎn)型的,一定會(huì)產(chǎn)生ClassCastException。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Mybatis通用Mapper介紹與使用

    詳解Mybatis通用Mapper介紹與使用

    目前通用mapper只支持對(duì)單表的操作,對(duì)單表的增刪改查,無(wú)需在mapper.xml寫對(duì)應(yīng)的sql語(yǔ)句,只需要我們調(diào)用相應(yīng)的接口,對(duì)于快速開發(fā)極為方便,感興趣的小伙伴們可以參考一下
    2018-06-06
  • SpringMvc入門指南(必看)

    SpringMvc入門指南(必看)

    下面小編就為大家?guī)?lái)一篇SpringMvc入門指南(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • Mybatis-plus支持Gbase8s分頁(yè)的實(shí)現(xiàn)示例

    Mybatis-plus支持Gbase8s分頁(yè)的實(shí)現(xiàn)示例

    本文主要介紹了Mybatis-plus支持Gbase8s分頁(yè)的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 聊聊maven的pom.xml中的exclusions標(biāo)簽的作用

    聊聊maven的pom.xml中的exclusions標(biāo)簽的作用

    這篇文章主要介紹了maven的pom.xml中的exclusions標(biāo)簽的作用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • request.getRequestURL()等方法得到路徑的區(qū)別及說(shuō)明

    request.getRequestURL()等方法得到路徑的區(qū)別及說(shuō)明

    這篇文章主要介紹了request.getRequestURL()等方法得到路徑的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Spring Boot實(shí)現(xiàn)跨域訪問實(shí)現(xiàn)代碼

    Spring Boot實(shí)現(xiàn)跨域訪問實(shí)現(xiàn)代碼

    本文通過(guò)實(shí)例代碼給大家介紹了Spring Boot實(shí)現(xiàn)跨域訪問的知識(shí),然后在文中給大家介紹了spring boot 服務(wù)器端設(shè)置允許跨域訪問 的方法,感興趣的朋友一起看看吧
    2017-07-07
  • 基于SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件過(guò)程解析

    基于SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件過(guò)程解析

    這篇文章主要介紹了基于SpringBoot實(shí)現(xiàn)定時(shí)發(fā)送郵件過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • SpringBoot QQ郵箱發(fā)送郵件實(shí)例代碼

    SpringBoot QQ郵箱發(fā)送郵件實(shí)例代碼

    大家好,本篇文章主要講的是SpringBoot QQ郵箱發(fā)送郵件實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Java后臺(tái)基于POST獲取JSON格式數(shù)據(jù)

    Java后臺(tái)基于POST獲取JSON格式數(shù)據(jù)

    這篇文章主要介紹了Java后臺(tái)基于POST獲取JSON格式數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Java中for、foreach、stream區(qū)別和性能比較詳解

    Java中for、foreach、stream區(qū)別和性能比較詳解

    for、foreach、stream都可以循環(huán)處理數(shù)據(jù),如果單純當(dāng)循環(huán)使用,for、foreach、stream哪個(gè)性能更好,這篇文章主要給大家介紹了關(guān)于Java中for、foreach、stream區(qū)別和性能的相關(guān)資料,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

彰化市| 吉木乃县| 神池县| 无棣县| 钟山县| 泾源县| 尉氏县| 南充市| 福海县| 筠连县| 恩施市| 榆树市| 乐东| 木兰县| 堆龙德庆县| 福鼎市| 鄂州市| 文山县| 道孚县| 贡嘎县| 尉氏县| 嘉峪关市| 福海县| 如皋市| 太原市| 灵武市| 贵定县| 博白县| 大荔县| 大足县| 常山县| 大埔区| 牡丹江市| 夏津县| 双桥区| 绥德县| 罗山县| 民和| 赞皇县| 金川县| 金塔县|