Java面向?qū)ο蟪绦蛟O(shè)計(jì)多態(tài)性示例
本文實(shí)例講述了Java面向?qū)ο蟪绦蛟O(shè)計(jì)多態(tài)性。分享給大家供大家參考,具體如下:
多態(tài):具有表現(xiàn)多種形態(tài)的能力的特征(同一個(gè)實(shí)現(xiàn)接口,使用不同的實(shí)例而執(zhí)行不同的操作)
實(shí)現(xiàn)多態(tài)的優(yōu)點(diǎn):為了方便統(tǒng)一調(diào)用!
實(shí)現(xiàn)多態(tài)的三種方式!
1. 子類(lèi)到父類(lèi)的轉(zhuǎn)換:
例:
Dog dog=new Dog("歐歐","雪納瑞");
dog.eat();
Pet pet=new Dog("歐歐","雪納瑞");//子類(lèi)到父類(lèi)的轉(zhuǎn)換
pet.eat();
pet.catchingFlyDisc();//編譯錯(cuò)誤,父類(lèi)的引用無(wú)法調(diào)用子類(lèi)的特殊方法
規(guī)則:
① 將一個(gè)父類(lèi)的引用指向一個(gè)子類(lèi)對(duì)象,稱為向上轉(zhuǎn)型,自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換
② 此時(shí)通過(guò)父類(lèi)引用變量調(diào)用的方法是子類(lèi)覆蓋或繼承父類(lèi)的方法,不是父類(lèi)的方法.
③ 此時(shí)通過(guò)父類(lèi)引用變量無(wú)法調(diào)用子類(lèi)特有的方法!
2. 使用父類(lèi)作為方法形參實(shí)現(xiàn)多態(tài)
public class Master
{
private String name = "";
private int money = 0;
public Master(String name, int money) {
this.name = name;
this.money = money;
}
public void feed(Pet pet) {
pet.eat();
}
public void feed(Dog dog) {
dog.eat();
}
public void feed(Penguin pen) {
pen.eat();
}
}
public class Test()
{
public static void main(String[] args) {
Master master = new Master("王先生", 100);
Pet pet = new Dog("歐歐", "雪納瑞");
master.feed(pet);
}
}
3. 使用父類(lèi)作為方法返回值實(shí)現(xiàn)多態(tài)
public class Master{
private String name = "";
private int money = 0;
public Pet getPet(int id)
{
Pet pet=null;
if(id==1)
{
pet=new Dog("歐歐","雪納瑞")
}
else if(id==2)
{
pet=new Penguin("娜娜","帝企鵝");
}
return pet;
}
}
注意:
① 繼承的存在(繼承是多態(tài)的基礎(chǔ),沒(méi)有繼承就沒(méi)有多態(tài))
② 子類(lèi)重寫(xiě)父類(lèi)的方法
③ 父類(lèi)引用變量指向子類(lèi)對(duì)象
更多java相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)與進(jìn)階教程》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》、《Java文件與目錄操作技巧匯總》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
java啟動(dòng)jar包設(shè)置啟動(dòng)參數(shù)的實(shí)現(xiàn)
本文主要介紹了java啟動(dòng)jar包設(shè)置啟動(dòng)參數(shù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
IntelliJ?IDEA快速查詢maven依賴關(guān)系圖文教程
Maven提供了來(lái)查看依賴關(guān)系,而IDE往往提供了更加便利的方式,比如Eclipse或者IDEA都有類(lèi)似的功能,下面這篇文章主要給大家介紹了關(guān)于IntelliJ?IDEA快速查詢maven依賴關(guān)系的相關(guān)資料,需要的朋友可以參考下2023-11-11
SpringBoot2.6.x升級(jí)后循環(huán)依賴及Swagger無(wú)法使用問(wèn)題
這篇文章主要為大家介紹了SpringBoot2.6.x升級(jí)后循環(huán)依賴及Swagger無(wú)法使用問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
spring是如何實(shí)現(xiàn)聲明式事務(wù)的
這篇文章主要介紹了spring是如何實(shí)現(xiàn)聲明式事務(wù)的,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
java 進(jìn)程是如何在Linux服務(wù)器上進(jìn)行內(nèi)存分配的
這篇文章主要介紹了java 進(jìn)程是如何在Linux服務(wù)器上進(jìn)行內(nèi)存分配的,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下2020-11-11

