java多態(tài)實現(xiàn)電子寵物系統(tǒng)
更新時間:2022年02月24日 12:28:59 作者:??悲宸???
這篇文章主要為大家詳細介紹了java多態(tài)實現(xiàn)電子寵物系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java多態(tài)實現(xiàn)電子寵物系統(tǒng)的具體代碼,供大家參考,具體內容如下
效果實現(xiàn):

代碼實現(xiàn):
1、主人類:
public class Master {
? ? //領養(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();
? ? ? ? }
? ? }
? ? //捐獻
? ? 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("已經吃飽了,再吃就撐破了");
? ? ? ? }
? ? }
? ? public Pet() {
? ? }
? ? public Pet(int health) {
? ? ? ? this.health = health;
? ? }
? ? public void eat(String food){
? ? ? ? System.out.println("寵物吃"+food);
? ? }
}5、測試類:
public class Test {
? ? public static void main(String[] args) {
? ? ? ? Scanner sc = new Scanner(System.in);
? ? ? ? Master master = new Master();
? ? ? ? //領養(yǎng)
? ? ? ? System.out.print("請輸入您要領養(yǎng)的寵物:");
? ? ? ? String dname = sc.next();
? ? ? ? Pet p = master.adopt(dname);
? ? ? ? //主人給狗狗喂食,玩耍
? ? ? ? System.out.print("請輸入您要喂得食物:");
? ? ? ? String dfood = sc.next();
? ? ? ? master.feed(p,dfood);
? ? ? ? System.out.println(p.getHealth());
? ? ? ? master.play(p);
? ? ? ? //主人給企鵝喂食,玩耍
? ? ? ? System.out.print("請輸入您要玩的寵物:");
? ? ? ? String pname = sc.next();
? ? ? ? p = master.adopt(pname);
? ? ? ? System.out.print("請輸入您要喂的食物:");
? ? ? ? String pfood = sc.next();
? ? ? ? master.feed(p,pfood);
? ? ? ? System.out.println(p.getHealth());
? ? ? ? master.play(p);
? ? ? ? //捐贈出去
? ? ? ? System.out.print("請輸入您要捐贈的寵物:");
? ? ? ? String jname = sc.next();
? ? ? ? Pet pet = master.donate(jname);
? ? ? ? System.out.println();
? ? ? ? System.out.println("您捐獻的是:"+pet.getClass().getName());
? ? }
}補:這里測試類我是讓用戶在控制臺輸入,如果不想輸入,可將測試類Test換成下面的代碼:
public class TestPet {
? ? public static void main(String[] args) {
? ? ? ? Master m = new Master();
? ? ? ? //領養(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);
? ? ? ? //捐獻出去
? ? ? ? Pet pet = m.donate("狗狗");
? ? ? ? System.out.println("您捐獻的是:"+pet.getClass().getName());
? ? }
}以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringCloud通過MDC實現(xiàn)分布式鏈路追蹤
在DDD領域驅動設計中,我們使用SpringCloud來去實現(xiàn),但排查錯誤的時候,通常會想到Skywalking,但是引入一個新的服務,增加了系統(tǒng)消耗和管理學習成本,對于大型項目比較適合,但是小的項目顯得太過臃腫了,所以本文介紹了SpringCloud通過MDC實現(xiàn)分布式鏈路追蹤2024-11-11
logback的UNDEFINED_PROPERTY屬性源碼執(zhí)行流程解讀
這篇文章主要為大家介紹了logback的UNDEFINED_PROPERTY屬性源碼執(zhí)行流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11
Mybatis注解開發(fā)@Select執(zhí)行參數和執(zhí)行sql語句的方式(最新詳解)
@Select 是 Mybatis 框架中的一個注解,用于執(zhí)行 SQL 查詢語句,并把查詢結果映射到指定的 Java 對象中,這篇文章主要介紹了Mybatis注解開發(fā)@Select執(zhí)行參數和執(zhí)行sql語句的方式,需要的朋友可以參考下2023-07-07
Java8 用Lambda表達式給List集合排序的實現(xiàn)
這篇文章主要介紹了Java8 用Lambda表達式給List集合排序的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08

