JAVA面向?qū)ο笤O(shè)計(jì)寵物類方式
JAVA面向?qū)ο笤O(shè)計(jì)寵物類
需求:
設(shè)計(jì)寵物類,用戶可以自由選擇養(yǎng)貓還是養(yǎng)狗,可以給寵物起名字,還可以實(shí)現(xiàn)喂食互動的功能,寵物需要有飽食度和快樂度。
寵物類【父類】
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() {//寵物的互動玩耍方法
if(full == 0) {
System.out.println(name+"已經(jī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() {//小動物被打哭了
//無意義代碼
//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("給寵物起個名字:");
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é)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用JDBC4.0操作XML類型的字段(保存獲取xml數(shù)據(jù))的方法
jdbc4.0最重要的特征是支持xml數(shù)據(jù)類型,接下來通過本文重點(diǎn)給大家介紹如何使用jdbc4.0操作xml類型的字段,對jdbc4.0 xml相關(guān)知識感興趣的朋友一起看下吧2016-08-08
springboot統(tǒng)一返回json數(shù)據(jù)格式并配置系統(tǒng)異常攔截方式
這篇文章主要介紹了springboot統(tǒng)一返回json數(shù)據(jù)格式并配置系統(tǒng)異常攔截方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08
JDBC以反射機(jī)制加載類注冊驅(qū)動連接MySQL
這篇文章介紹了JDBC以反射機(jī)制加載類注冊驅(qū)動連接MySQL的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01
java實(shí)現(xiàn)輕量型http代理服務(wù)器示例
這篇文章主要介紹了java實(shí)現(xiàn)輕量型http代理服務(wù)器示例,需要的朋友可以參考下2014-04-04
springboot實(shí)現(xiàn)配置多個yml文件
文章主要介紹了在Spring Boot項(xiàng)目中實(shí)現(xiàn)多環(huán)境配置的三種方式:方式一、多YAML文件配置;方式二、單YAML文件配置;方式三、在pom.xml中指定環(huán)境配置,每種方式都有其特點(diǎn)和適用場景2025-11-11
Java中synchronized關(guān)鍵字修飾方法同步的用法詳解
synchronized可以用來同步靜態(tài)和非靜態(tài)方法,下面就具體來看一下Java中synchronized關(guān)鍵字修飾方法同步的用法詳解:2016-06-06

