java多態(tài)實(shí)現(xiàn)電子寵物系統(tǒng)
本文實(shí)例為大家分享了java多態(tài)實(shí)現(xiàn)電子寵物系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下
效果實(shí)現(xiàn):
代碼實(shí)現(xiàn):
1、主人類:
public class Master { ? ? //領(lǐng)養(yǎng) ? ? public Pet adopt(String name){ ? ? ? ? if ("狗狗".equals(name)){ ? ? ? ? ? ? return new Dog(); ? ? ? ? }else if (name.equals("企鵝")){ ? ? ? ? ? ? return new Penguin(); ? ? ? ? } ? ? ? ? return null; ? ? } ? ? //喂食 ? ? public void feed(Pet pet, String food){ ? ? ? ? pet.eat(food); ? ? } ? ? //玩耍 ? ? public void play(Pet pet){ ? ? ? ? if(pet instanceof Dog){ ? ? ? ? ? ? Dog d= (Dog) pet; ? ? ? ? ? ? d.catchDisk(); ? ? ? ? }else if(pet instanceof Penguin){ ? ? ? ? ? ? Penguin p= (Penguin) pet; ? ? ? ? ? ? p.swimInSouth(); ? ? ? ? } ? ? } ? ? //捐獻(xiàn) ? ? public Pet donate(String name){ ? ? ? ? if("狗狗".equals(name)){ ? ? ? ? ? ? return new Dog(); ? ? ? ? }else if(name.equals("企鵝")){ ? ? ? ? ? ? return new Penguin(); ? ? ? ? } ? ? ? ? return null; ? ? } }
2、狗狗類:
public class Dog extends Pet { ? ? public void catchDisk(){ ? ? ? ? System.out.println("狗狗接飛盤!"); ? ? } ? ? public Dog(int health) { ? ? ? ? super(health); ? ? } ? ? public Dog() { ? ? } ? ? @Override ? ? public void eat(String food) { ? ? ? ? System.out.println("狗狗吃"+food+",吃飽后健康值+3"); ? ? ? ? setHealth(getHealth()+3); ? ? } }
3、企鵝類:
public class Penguin extends Pet{ ? ? public void swimInSouth(){ ? ? ? ? System.out.println("企鵝在南極游泳!"); ? ? } ? ? public Penguin(int health) { ? ? ? ? super(health); ? ? } ? ? public Penguin() { ? ? } ? ? @Override ? ? public void eat(String food) { ? ? ? ? System.out.println("企鵝寶寶吃"+food+",吃完后,健康值加5"); ? ? ? ? setHealth(getHealth()+5); ? ? } }
4、寵物類,Pet:
public class Pet { ? ? private int health; ? ? public int getHealth() { ? ? ? ? return health; ? ? } ? ? public void setHealth(int health) { ? ? ? ? this.health = health; ? ? ? ? if(this.health>100){ ? ? ? ? ? ? this.health=100; ? ? ? ? ? ? System.out.println("已經(jīng)吃飽了,再吃就撐破了"); ? ? ? ? } ? ? } ? ? public Pet() { ? ? } ? ? public Pet(int health) { ? ? ? ? this.health = health; ? ? } ? ? public void eat(String food){ ? ? ? ? System.out.println("寵物吃"+food); ? ? } }
5、測(cè)試類:
public class Test { ? ? public static void main(String[] args) { ? ? ? ? Scanner sc = new Scanner(System.in); ? ? ? ? Master master = new Master(); ? ? ? ? //領(lǐng)養(yǎng) ? ? ? ? System.out.print("請(qǐng)輸入您要領(lǐng)養(yǎng)的寵物:"); ? ? ? ? String dname = sc.next(); ? ? ? ? Pet p = master.adopt(dname); ? ? ? ? //主人給狗狗喂食,玩耍 ? ? ? ? System.out.print("請(qǐng)輸入您要喂得食物:"); ? ? ? ? String dfood = sc.next(); ? ? ? ? master.feed(p,dfood); ? ? ? ? System.out.println(p.getHealth()); ? ? ? ? master.play(p); ? ? ? ? //主人給企鵝喂食,玩耍 ? ? ? ? System.out.print("請(qǐng)輸入您要玩的寵物:"); ? ? ? ? String pname = sc.next(); ? ? ? ? p = master.adopt(pname); ? ? ? ? System.out.print("請(qǐng)輸入您要喂的食物:"); ? ? ? ? String pfood = sc.next(); ? ? ? ? master.feed(p,pfood); ? ? ? ? System.out.println(p.getHealth()); ? ? ? ? master.play(p); ? ? ? ? //捐贈(zèng)出去 ? ? ? ? System.out.print("請(qǐng)輸入您要捐贈(zèng)的寵物:"); ? ? ? ? String jname = sc.next(); ? ? ? ? Pet pet = master.donate(jname); ? ? ? ? System.out.println(); ? ? ? ? System.out.println("您捐獻(xiàn)的是:"+pet.getClass().getName()); ? ? } }
補(bǔ):這里測(cè)試類我是讓用戶在控制臺(tái)輸入,如果不想輸入,可將測(cè)試類Test換成下面的代碼:
public class TestPet { ? ? public static void main(String[] args) { ? ? ? ? Master m = new Master(); ? ? ? ? //領(lǐng)養(yǎng) ? ? ? ? Pet p = m.adopt("狗狗"); ? ? ? ? //主人給狗狗喂食,玩耍 ? ? ? ? m.feed(p,"大骨頭"); ? ? ? ? System.out.println(p.getHealth()); ? ? ? ? m.play(p); ? ? ? ? //主人給企鵝喂食,玩耍 ? ? ? ? p = m.adopt("企鵝"); ? ? ? ? m.feed(p,"小魚"); ? ? ? ? System.out.println(p.getHealth()); ? ? ? ? m.play(p); ? ? ? ? //捐獻(xiàn)出去 ? ? ? ? Pet pet = m.donate("狗狗"); ? ? ? ? System.out.println("您捐獻(xiàn)的是:"+pet.getClass().getName()); ? ? } }
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
設(shè)計(jì)模式之責(zé)任鏈模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了設(shè)計(jì)模式之責(zé)任鏈模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08java實(shí)現(xiàn)科研信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了java科研信息管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02MyBatis 接收數(shù)據(jù)庫中沒有的字段的解決
這篇文章主要介紹了MyBatis 接收數(shù)據(jù)庫中沒有的字段的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03了解spring中的CloudNetflix Hystrix彈性客戶端
這篇文章主要介紹了了解spring中的CloudNetflix Hystrix彈性客戶端,客戶端彈性模式是在遠(yuǎn)程服務(wù)發(fā)生錯(cuò)誤或表現(xiàn)不佳時(shí)保護(hù)遠(yuǎn)程資源(另一個(gè)微服務(wù)調(diào)用或者數(shù)據(jù)庫查詢)免于崩潰。,需要的朋友可以參考下2019-06-06SpringBoot整合easyExcel實(shí)現(xiàn)CSV格式文件的導(dǎo)入導(dǎo)出
這篇文章主要為大家詳細(xì)介紹了SpringBoot整合easyExcel實(shí)現(xiàn)CSV格式文件的導(dǎo)入導(dǎo)出,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以參考下2024-02-02