java 多態(tài)實(shí)例代碼
多態(tài)是同一個(gè)行為具有多個(gè)不同表現(xiàn)形式或形態(tài)的能力。多態(tài)就是同一個(gè)接口,使用不同的實(shí)例而執(zhí)行不同操作。
多態(tài)性是對(duì)象多種表現(xiàn)形式的體現(xiàn),比如:
在現(xiàn)實(shí)中,我們按下F1鍵這個(gè)動(dòng)作:
如果當(dāng)前在Flash界面下彈出的就是AS 3的幫助文檔
如果當(dāng)前在Word下彈出的就是Word幫助
在Windows下彈出的就是Windows幫助和支持
多態(tài)存在的三個(gè)必要條件
繼承
重寫(xiě)
父類(lèi)引用指向子類(lèi)對(duì)象
Parent p = new Child();
當(dāng)使用多態(tài)方式調(diào)用方法時(shí),首先檢查父類(lèi)中是否有該方法,如果沒(méi)有,則編譯錯(cuò)誤;如果有,再去調(diào)用子類(lèi)的同名方法。
例題
package Wangyi;
class Base
{
public void method()
{
System.out.println("Base");
}
}
class Son extends Base
{
public void method()
{
System.out.println("Son");
}
public void methodB()
{
System.out.println("SonB");
}
}
public class Test01
{
public static void main(String[] args)
{
Base base = new Son();
base.method();
base.methodB();
}
}
問(wèn)這個(gè)程序的輸出結(jié)果。(D)
A. Base SonB B. Son SonB C. Base Son SonB D.編譯不通過(guò) 解釋?zhuān)? Base base=new Son(); 是多態(tài)的表示形式。父類(lèi)對(duì)象調(diào)用了子類(lèi)創(chuàng)建了Son對(duì)象。 base調(diào)用的method()方法就是調(diào)用了子類(lèi)重寫(xiě)的method()方法。 而此時(shí)base還是屬于Base對(duì)象,base調(diào)用methodB()時(shí)Base對(duì)象里沒(méi)有這個(gè)方法,所以編譯不通過(guò)。 要想調(diào)用的話需要先通過(guò)SON son=(SON)base;強(qiáng)制轉(zhuǎn)換,然后用son.methodB()調(diào)用。
總結(jié)
以上就是本文關(guān)于java 多態(tài)實(shí)例代碼的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!
相關(guān)文章
Java實(shí)現(xiàn)創(chuàng)建運(yùn)行時(shí)類(lèi)的對(duì)象操作示例
這篇文章主要介紹了Java實(shí)現(xiàn)創(chuàng)建運(yùn)行時(shí)類(lèi)的對(duì)象操作,結(jié)合實(shí)例形式分析了Java動(dòng)態(tài)創(chuàng)建對(duì)象的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-08-08
SpringBoot項(xiàng)目引入token設(shè)置方式
本文詳細(xì)介紹了JWT(JSON Web Token)的基本概念、結(jié)構(gòu)、應(yīng)用場(chǎng)景以及工作原理,通過(guò)動(dòng)手實(shí)踐,展示了如何在Spring Boot項(xiàng)目中實(shí)現(xiàn)JWT的生成、驗(yàn)證和攔截器配置2025-01-01
Java接口默認(rèn)方法帶來(lái)的問(wèn)題分析【二義性問(wèn)題】
這篇文章主要介紹了Java接口默認(rèn)方法帶來(lái)的問(wèn)題,結(jié)合實(shí)例形式分析了java接口帶來(lái)的二義性問(wèn)題,需要的朋友可以參考下2019-08-08
mybatis-plus阻止全表更新與刪除的實(shí)現(xiàn)
BlockAttackInnerInterceptor 是mybatis-plus的一個(gè)內(nèi)置攔截器,用于防止惡意的全表更新或刪除操作,本文主要介紹了mybatis-plus阻止全表更新與刪除的實(shí)現(xiàn),感興趣的可以了解一下2023-12-12
基于Java SSM實(shí)現(xiàn)在線點(diǎn)餐系統(tǒng)
本項(xiàng)目基于Java SSM框架實(shí)現(xiàn)在線點(diǎn)餐系統(tǒng),主要實(shí)現(xiàn)系統(tǒng)的在線點(diǎn)餐功能。文中的示例代碼講解詳細(xì),感興趣的可以跟隨小編一起學(xué)習(xí)一下2022-02-02
Jedis零基礎(chǔ)入門(mén)及操作Redis中的數(shù)據(jù)結(jié)構(gòu)詳解
Jedis 的 API 方法跟 Redis 的命令基本上完全一致,熟悉 Redis 的操作命令,自然就很容易使用 Jedis,因此官方也推薦 Java 使用 Jedis 來(lái)連接和操作 Redis2022-09-09
SpringBoot+Vue+Redis實(shí)現(xiàn)單點(diǎn)登錄(一處登錄另一處退出登錄)
小編接到一個(gè)需求,需要實(shí)現(xiàn)用戶(hù)在瀏覽器登錄后,跳轉(zhuǎn)到其他頁(yè)面,當(dāng)用戶(hù)在其它地方又登錄時(shí),前面用戶(hù)登錄的頁(yè)面退出登錄,這篇文章主要介紹了SpringBoot+Vue+Redis實(shí)現(xiàn)單點(diǎn)登錄,需要的朋友可以參考下2019-12-12

