gpt4 book ai didi

java - 简单的面向对象编程概念

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:52:50 26 4
gpt4 key购买 nike

这对你来说可能看起来像是一个虚拟问题,但我很难解决这个问题:

我们有一个抽象的 class Animal 和扩展它的 CatDog。在 Animal 中,我们有一个方法 produceSound(); 是抽象的。正如您可能猜到的那样,对于 Cat,它应该返回“Mao”,而对于 Dog,它应该返回“Bao”或类似的东西。这没问题,但现在我们必须在 Animal 类 中编写一个 static 方法,该方法返回 CatDog 对象,具体取决于在他们的声音上。例如:identifyAnimal("Mao") 应该返回 Cat

问题:如何实现identifyAnimal(String sound)方法?

这是层次结构的一些简单示例:

动物类

public abstract class Animal {

protected abstract String produceSound();

protected static void identifyAnimal(String animalSound) {
// TODO
}
}

猫类

public class Cat extends Animal{

@Override
protected String produceSound() {
return "Mao";
}
}

狗类

public class Dog extends Animal{

@Override
protected String produceSound() {
return "Bao";
}
}

测试类

public class AnimalTest {

public static void main(String[] args) {
Animal.identifyAnimal("Bao");
}
}

AnimalTest 类中调用 Animal.identifyAnimal("Bao"); 时,我们应该得到一只 Dog

最佳答案

private static Class[] animalTypes = [Dog.class, Cat.class];

public static String identifyAnimal(String animalSound)
{
for (int i = 0; i < animalTypes.length; i++) {
Animal a = animalTypes[i].newInstance();
String s = a.produceSound();

if (animalSound.equals(s))
return animalTypes[i].getName();
}

return null;
}

关于java - 简单的面向对象编程概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651771/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com