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)以及速度的對比,感興趣的可以了解一下2022-07-07
SpringBoot中操作Bean的生命周期的方法總結(jié)
在SpringBoot應(yīng)用中,管理和操作Bean的生命周期是一項(xiàng)關(guān)鍵的任務(wù),這不僅涉及到如何創(chuàng)建和銷毀Bean,還包括如何在應(yīng)用的生命周期中對Bean進(jìn)行精細(xì)控制,本文給大家總結(jié)了SpringBoot中操作Bean的生命周期的方法,需要的朋友可以參考下2023-12-12
Java中的clone()和Cloneable接口實(shí)例
這篇文章主要介紹了Java中的clone()和Cloneable接口實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
Java中Maven項(xiàng)目導(dǎo)出jar包配置的示例代碼
這篇文章主要介紹了Java中Maven項(xiàng)目導(dǎo)出jar包配置的示例代碼,需要的朋友可以參考下2018-11-11
Spring?Boot?實(shí)現(xiàn)?WebSocket?的代碼示例
WebSocket?協(xié)議是獨(dú)立的基于?TCP?協(xié)議。它與?HTTP?的唯一關(guān)系是,它的握手會被?HTTP?服務(wù)器解釋為?Upgrade?請求,接下來通過本文給大家介紹Spring?Boot?實(shí)現(xiàn)?WebSocket?示例詳解,需要的朋友可以參考下2022-04-04
使用Java代碼實(shí)現(xiàn)RocketMQ的生產(chǎn)與消費(fèi)消息
這篇文章介紹一下其他的小組件以及使用Java代碼實(shí)現(xiàn)生產(chǎn)者對消息的生成,消費(fèi)者消費(fèi)消息等知識點(diǎn),并通過代碼示例介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-07-07
電腦上安裝多個(gè)JDK版本時(shí)該如何自由切換(詳細(xì)圖文)
我們在學(xué)習(xí)的過程中經(jīng)常用到不同的jdk版本,那么如何在一臺電腦上同時(shí)安裝多個(gè)jdk版本并進(jìn)行切換呢,這篇文章主要給大家介紹了關(guān)于電腦上安裝多個(gè)JDK版本時(shí)該如何自由切換的相關(guān)資料,需要的朋友可以參考下2023-10-10
ShardingSphere JDBC強(qiáng)制路由使用的項(xiàng)目實(shí)踐
在某些特定場景下,可能需要繞過分片規(guī)則直接定位到特定的數(shù)據(jù)庫或表,這種情況下就可以使用HintRouting,本文就來介紹一下ShardingSphere JDBC強(qiáng)制路由使用的項(xiàng)目實(shí)踐,感興趣的可以了解一下2024-06-06

