JAVA面向?qū)ο笤O(shè)計(jì)寵物類方式
JAVA面向?qū)ο笤O(shè)計(jì)寵物類
需求:
設(shè)計(jì)寵物類,用戶可以自由選擇養(yǎng)貓還是養(yǎng)狗,可以給寵物起名字,還可以實(shí)現(xiàn)喂食互動(dòng)的功能,寵物需要有飽食度和快樂度。
寵物類【父類】
package cn.cxy.exec; public class Pet { String name; int full; int happy; public Pet(String name) { this(name, 50, 50); } public Pet(String name,int full,int happy) { this.name = name; this.full = full; this.happy = happy; } public void feed() {//寵物的喂食方法 if(full == 100) { System.out.println(name+"已經(jīng)吃飽了"); return; } System.out.println("給"+name+"喂食"); full += 10; System.out.println("飽食度:"+full); } public void play() {//寵物的互動(dòng)玩耍方法 if(full == 0) { System.out.println(name+"已經(jīng)餓得玩不動(dòng)了"); return; } System.out.println("陪"+name+"玩耍"); happy += 10; full -= 10; System.out.println("快樂度:"+happy); System.out.println("飽食度:"+full); } public void punish() {//寵物的懲罰方法 //子類不同的代碼,改成調(diào)方法 System.out.println( "打"+name+"的pp,"+name+"哭叫:"+cry()); happy -= 10; System.out.println("快樂度:"+happy); } public String cry() {//小動(dòng)物被打哭了 //無意義代碼 //cry()方法需要在子類中重寫,返回具體哭叫聲 return "此處有哭叫聲"; } }
小貓類【子類】
package cn.cxy.exec; public class Cat extends Pet{ public Cat(String name, int full, int happy) { super(name, full, happy); } public Cat(String name) { super(name); } @Override public String cry() { return "喵~"; } }
小狗類【子類】
package cn.cxy.exec; public class Dog extends Pet { public Dog(String name, int full, int happy) { super(name, full, happy); } public Dog(String name) { super(name); } @Override public String cry() { return "汪~"; } }
測試類
package cn.cxy.exec; import java.util.Random; import java.util.Scanner; public class TestPet { public static void main(String[] args) { System.out.println("1. 狗"); System.out.println("2. 貓"); System.out.print("選擇:> "); int c = new Scanner(System.in).nextInt(); System.out.print("給寵物起個(gè)名字:"); String n = new Scanner(System.in).nextLine(); //定義貓狗變量 Dog dog = null; Cat cat = null; if(c == 1) { dog = new Dog(n); play(dog); } else { cat = new Cat(n); play(cat); } } private static void play(Dog dog) { System.out.println("按回車執(zhí)行"); while(true) { new Scanner(System.in).nextLine(); int r = new Random().nextInt(6); switch(r) { case 0: dog.feed(); break; case 1: dog.play(); break; default: dog.punish(); break; } } } private static void play(Cat cat) { System.out.println("按回車執(zhí)行"); while(true) { new Scanner(System.in).nextLine(); int r = new Random().nextInt(6); switch(r) { case 0: cat.feed(); break; case 1: cat.play(); break; default: cat.punish(); break; } } } }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)超大Excel文件解析(XSSF,SXSSF,easyExcel)
這篇文章主要為大家詳細(xì)介紹了如何利用Java語言實(shí)現(xiàn)超大Excel文件解析(XSSF,SXSSF,easyExcel)以及速度的對(duì)比,感興趣的可以了解一下2022-07-07SpringBoot中操作Bean的生命周期的方法總結(jié)
在SpringBoot應(yīng)用中,管理和操作Bean的生命周期是一項(xiàng)關(guān)鍵的任務(wù),這不僅涉及到如何創(chuàng)建和銷毀Bean,還包括如何在應(yīng)用的生命周期中對(duì)Bean進(jìn)行精細(xì)控制,本文給大家總結(jié)了SpringBoot中操作Bean的生命周期的方法,需要的朋友可以參考下2023-12-12Java中的clone()和Cloneable接口實(shí)例
這篇文章主要介紹了Java中的clone()和Cloneable接口實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java中Maven項(xiàng)目導(dǎo)出jar包配置的示例代碼
這篇文章主要介紹了Java中Maven項(xiàng)目導(dǎo)出jar包配置的示例代碼,需要的朋友可以參考下2018-11-11Spring?Boot?實(shí)現(xiàn)?WebSocket?的代碼示例
WebSocket?協(xié)議是獨(dú)立的基于?TCP?協(xié)議。它與?HTTP?的唯一關(guān)系是,它的握手會(huì)被?HTTP?服務(wù)器解釋為?Upgrade?請(qǐng)求,接下來通過本文給大家介紹Spring?Boot?實(shí)現(xiàn)?WebSocket?示例詳解,需要的朋友可以參考下2022-04-04使用Java代碼實(shí)現(xiàn)RocketMQ的生產(chǎn)與消費(fèi)消息
這篇文章介紹一下其他的小組件以及使用Java代碼實(shí)現(xiàn)生產(chǎn)者對(duì)消息的生成,消費(fèi)者消費(fèi)消息等知識(shí)點(diǎn),并通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07電腦上安裝多個(gè)JDK版本時(shí)該如何自由切換(詳細(xì)圖文)
我們?cè)趯W(xué)習(xí)的過程中經(jīng)常用到不同的jdk版本,那么如何在一臺(tái)電腦上同時(shí)安裝多個(gè)jdk版本并進(jìn)行切換呢,這篇文章主要給大家介紹了關(guān)于電腦上安裝多個(gè)JDK版本時(shí)該如何自由切換的相關(guān)資料,需要的朋友可以參考下2023-10-10ShardingSphere JDBC強(qiáng)制路由使用的項(xiàng)目實(shí)踐
在某些特定場景下,可能需要繞過分片規(guī)則直接定位到特定的數(shù)據(jù)庫或表,這種情況下就可以使用HintRouting,本文就來介紹一下ShardingSphere JDBC強(qiáng)制路由使用的項(xiàng)目實(shí)踐,感興趣的可以了解一下2024-06-06