Java中instanceof關(guān)鍵字實(shí)例講解
1.向上轉(zhuǎn)型 向下轉(zhuǎn)型

2.強(qiáng)制類型轉(zhuǎn)換的應(yīng)用
應(yīng)用多態(tài)性時(shí)由于引用為父類類型,導(dǎo)致編譯時(shí)只能調(diào)用父類中聲明的屬性和方法。子類特有的屬性和方法不能調(diào)用。因此可將父類引用強(qiáng)制轉(zhuǎn)換為子類引用,則可調(diào)用子類特有方法。
class Animal
{
public void shout()
{
System.out.println("Animal is shouting ");
}
}
class Dog extends Animal
{
public void shout()
{
System.out.println("汪 汪 汪");
}
public void skill()
{
System.out.println("Dog can guard home");
}
}
class Cat extends Animal
{
public void shout()
{
System.out.println("喵 喵 喵");
}
}
public static void main(String [] args)
{
Animal animalD =new Dog();
// animalD.skill() 報(bào)錯(cuò),因?yàn)锳nimal類無(wú)skill方法
Dog dog=(Dog)animalD;
dog.skill(); //輸出 Dog can guard home
}
3.instanceof 關(guān)鍵字使用
a instanceof A : 判斷對(duì)象a是否是類A的實(shí)例。如果是,返回true;否則返回false。
public static void main(String [] args)
{
Animal animalD =new Dog();
if(animalD instanceof Dog)
{
System.out.println("true");//輸出true
}
}
4.測(cè)試舉例
編譯通過(guò),運(yùn)行不通過(guò)
Animal animal=new Dog(); Cat cat=(Cat)animal // 因?yàn)镃at和Dog無(wú)子父類關(guān)系 Animal animal=new Animal(); Dog dog=(Dog)animal; //animal必須指向Dog類或Dog類子類
編譯不通過(guò)
Dog dog=new Cat(); //直接不符合多態(tài)性定義
編譯通過(guò),運(yùn)行通過(guò)
Object object=new Dog(); Animal animal=(Animal)object
5.強(qiáng)制類型轉(zhuǎn)換成功總結(jié)
子類賦值給直接父類引用(多態(tài)),然后直接父類引用再?gòu)?qiáng)制轉(zhuǎn)換成子類子類賦值給間接父類引用(多態(tài)),然后間接父類引用可以強(qiáng)制轉(zhuǎn)換成子類或者子類的父類

到此這篇關(guān)于Java中instanceof關(guān)鍵字實(shí)例講解的文章就介紹到這了,更多相關(guān)Java instanceof關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java中instanceOf關(guān)鍵字的用法及特性詳解
- Java深入講解instanceof關(guān)鍵字的使用
- Java關(guān)鍵字之instanceof詳解
- Java instanceof關(guān)鍵字用法詳解及注意事項(xiàng)
- java中instanceof 關(guān)鍵字作用和實(shí)際用途詳解
- Java關(guān)鍵字instanceof用法及實(shí)現(xiàn)策略
- Java關(guān)鍵字instanceof的兩種用法實(shí)例
- Java instanceof關(guān)鍵字的的進(jìn)一步理解
- Java中instanceof關(guān)鍵字的用法總結(jié)
- Java中instanceof 關(guān)鍵字的使用
相關(guān)文章
SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出)
這篇文章主要介紹了SpringBoot快速集成jxls-poi(自定義模板,支持本地文件導(dǎo)出,在線文件導(dǎo)出),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Java中Map與JSON數(shù)據(jù)之間的互相轉(zhuǎn)化
我們?cè)陂_(kāi)發(fā)中難免和JSON打交道,這不小編最近遇到了,需要把一些信息轉(zhuǎn)成JSON字符串,下面這篇文章主要給大家介紹了關(guān)于Java中Map與JSON數(shù)據(jù)之間的互相轉(zhuǎn)化,需要的朋友可以參考下2023-04-04
基于Java的界面開(kāi)發(fā)詳細(xì)步驟(用戶注冊(cè)登錄)
通過(guò)一段時(shí)間Java Web的學(xué)習(xí),寫一個(gè)簡(jiǎn)單的注冊(cè)登陸界面來(lái)做個(gè)總結(jié),這篇文章主要給大家介紹了基于Java的界面開(kāi)發(fā)(用戶注冊(cè)登錄)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-01-01
深入Ajax代理的Java Servlet的實(shí)現(xiàn)詳解
本篇文章是對(duì)Ajax代理的Java Servlet的實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
使用mybatis的@Interceptor實(shí)現(xiàn)攔截sql的方法詳解
攔截器是一種基于 AOP(面向切面編程)的技術(shù),它可以在目標(biāo)對(duì)象的方法執(zhí)行前后插入自定義的邏輯,本文給大家介紹了使用mybatis的@Interceptor實(shí)現(xiàn)攔截sql的方法,需要的朋友可以參考下2024-03-03
Java中使用Socket發(fā)送Java對(duì)象實(shí)例
這篇文章主要介紹了Java中使用Socket發(fā)送Java對(duì)象實(shí)例,本文使用對(duì)象流直接發(fā)送對(duì)象,本文同時(shí)給出代碼實(shí)例,需要的朋友可以參考下2015-05-05
intelliJ idea 2023 配置Tomcat 8圖文教程
這篇文章主要介紹了intelliJ idea 2023 配置Tomcat 8教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
SparkSQL使用IDEA快速入門DataFrame與DataSet的完美教程
本文給大家介紹使用idea開(kāi)發(fā)Spark SQL 的詳細(xì)過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-08-08

