JAVA 自动喂养器,能识别宠物(猫/狗/仓鼠/兔子其它),喂正确的食物。
补充完整代码,并写出补充思路,达到以下预期输出。
输出:
------家里养了一些宠物,它们分别是-----
哈士奇
波斯猫
小仓鼠
长毛兔
------使用自动喂养宠物神器中---------
正在给哈士奇喂狗粮中
正在给波斯猫喂猫粮中
正在给小仓鼠喂鼠粮中
正在给长毛兔喂兔粮中
class Animal {
String name;
Animal(String name) {
this.name = name;
}
String getName() {
return this.name;
}
void welcome() {
System.out.println("欢迎回家");
}
//请补充void feed()方法
}
class Cat extends Animal {
Cat(String name) {
super(name);
}
void welcome() {
System.out.println(name + "高冷地从我身边走过");
}
//请覆写void feed()方法
@Override
}
class Dog extends Animal {
Dog(String name) {
super(name);
}
void welcome() {
System.out.println(name + "热情地扑到我身上");
}
//请覆写void feed()方法
}
class Hamster extends Animal{ //仓鼠类,食物是鼠粮
Hamster(String name){
super(name);
}
//请覆写void feed()方法
}
class Rabbit extends Animal{ //兔子类,食物是兔粮
Rabbit(String name){
super(name);
}
//请覆写void feed()方法
}
class FeedMachine{ //自动喂养宠物神器
public static void autoFeed(Animal animal) {
//请补充代码
//提示:无需判断animal对象是哪种动物,直接利用多态进行自动喂养
}
}
public class JavaDemo {
public static void main(String[] args) {
// 家里养的宠物们
Animal[] pets = new Animal[] {
new Dog("哈士奇"), new Cat("波斯猫"),
new Hamster("小仓鼠"), new Rabbit("长毛兔")};
System.out.println("------家里养了一些宠物,它们分别是-----");
for(int i = 0; i < pets.length; i++) {
System.out.println(pets[i].getName());
}
System.out.println("------使用自动喂养宠物神器中---------");
for(Animal pet : pets) {
FeedMachine.autoFeed(pet);
}
}
}
public class JavaDemo {
public static void main(String[] args) {
// 家里养的宠物们
Animal[] pets = new Animal[] {
new Dog("哈士奇"), new Cat("波斯猫"),
new Hamster("小仓鼠"), new Rabbit("长毛兔")};
System.out.println("------家里养了一些宠物,它们分别是-----");
for(int i = 0; i < pets.length; i++) {
System.out.println(pets[i].getName());
}
System.out.println("------使用自动喂养宠物神器中---------");
for(Animal pet : pets) {
FeedMachine.autoFeed(pet);
}
}
}
class Animal {
String name;
Animal(String name) {
this.name = name;
}
String getName() {
return this.name;
}
void welcome() {
System.out.println("欢迎回家");
}
//请补充void feed()方法
void feed() {
System.out.println("动物正在被喂养");
}
}
class Cat extends Animal {
Cat(String name) {
super(name);
}
void welcome() {
System.out.println(name + "高冷地从我身边走过");
}
//请覆写void feed()方法
@Override
void feed() {
System.out.println("正在给波斯猫喂猫粮中");
}
}
class Dog extends Animal {
Dog(String name) {
super(name);
}
void welcome() {
System.out.println(name + "热情地扑到我身上");
}
//请覆写void feed()方法
@Override
void feed() {
System.out.println("正在给哈士奇喂狗粮中");
}
}
class Hamster extends Animal{ //仓鼠类,食物是鼠粮
Hamster(String name){
super(name);
}
//请覆写void feed()方法
@Override
void feed() {
System.out.println("正在给小仓鼠喂鼠粮中");
}
}
class Rabbit extends Animal{ //兔子类,食物是兔粮
Rabbit(String name){
super(name);
}
//请覆写void feed()方法
@Override
void feed() {
System.out.println("正在给长毛兔喂兔粮中");
}
}
class FeedMachine{ //自动喂养宠物神器
public static void autoFeed(Animal animal) {
//请补充代码
//提示:无需判断animal对象是哪种动物,直接利用多态进行自动喂养
animal.feed();
}
}
思路:
1、首先父类包含一个名为 feed() 的方法,当调用此方法时,将输出一条消息,表示动物正在被喂养。注意,因为它没有具体实现,需要在子类中实现。
2、根据宠物类型,实现具体的 feed() 方法。
3、自动喂养宠物神器,直接利用多态,输出对应动物被喂养信息。
g.fillRect(5, 35, 775, 525);// 用画笔g画游戏界面黑框
g.drawImage(bj, 5, 35, this);// 添加游戏界面背景图片
问题解答:
JAVA自动喂养器程序实现思路及关键代码:
public class Pet {
private String name;
private String category;
public Pet(String name, String category) {
this.name = name;
this.category = category;
}
public String getName() {
return name;
}
public String getCategory() {
return category;
}
}
public class Food {
private String name;
private String category;
public Food(String name, String category) {
this.name = name;
this.category = category;
}
public String getName() {
return name;
}
public String getCategory() {
return category;
}
}
import java.util.HashMap;
public class Feeder {
private HashMap<String, Food> foodMap = new HashMap<>();
public Feeder() {
Food dogFood = new Food("狗粮", "狗");
Food catFood = new Food("猫粮", "猫");
Food hamsterFood = new Food("鼠粮", "仓鼠");
Food rabbitFood = new Food("兔粮", "兔子");
foodMap.put("狗", dogFood);
foodMap.put("猫", catFood);
foodMap.put("仓鼠", hamsterFood);
foodMap.put("兔子", rabbitFood);
}
public void feedPet(Pet pet) {
System.out.println("正在给" + pet.getName() + "喂" + foodMap.get(pet.getCategory()).getName() + "中");
}
}
public static void main(String[] args) {
Pet dog = new Pet("哈士奇", "狗");
Pet cat = new Pet("波斯猫", "猫");
Pet hamster = new Pet("小仓鼠", "仓鼠");
Pet rabbit = new Pet("长毛兔", "兔子");
Feeder feeder = new Feeder();
System.out.println(dog.getName());
feeder.feedPet(dog);
System.out.println(cat.getName());
feeder.feedPet(cat);
System.out.println(hamster.getName());
feeder.feedPet(hamster);
System.out.println(rabbit.getName());
feeder.feedPet(rabbit);
}
输出结果:
哈士奇
正在给哈士奇喂狗粮中
波斯猫
正在给波斯猫喂猫粮中
小仓鼠
正在给小仓鼠喂鼠粮中
长毛兔
正在给长毛兔喂兔粮中
代码还有待完善