所以我有这个结构 - 一个名为Animal
:
public interface Animal {
public String move ();
public String makeSound();
public String getType();
}
然后是一个抽象类AbstractBird
,它实现了Anima
:
public abstract class AbstractBird implements Animal {
public String birdType;
public String getType() {
return birdType;
}
@Override
public String move() {
return "Fly";
}
}
然后是一些以相同结构扩展AbstractBird
并称为 like Dove
,Hawk
等的类Eagle
。看起来像这样:
public class Eagle extends AbstractBird {
public Eagle() {
birdType = "Eagle";
}
@Override
public String makeSound() {
return "Noone knows";
}
}
然后是我的类AnimalSound
,它有main
方法:
public class AnimalSound {
public static void main(String[] args) {
Eagle e = new Eagle();
Dove d = new Dove();
Hawk h = new Hawk();
play(e);
play(d);
play(h);
}
public static void play(Animal a) {
System.out.println("````````````");
System.out.println(a.getType());
System.out.println(a.makeSound());
System.out.println(a.move());
}
}
如您所见,我有这个方法getType()
返回birdtype
. 方法本身是在抽象类中实现的,这没问题,但为了得到正确的结果,birType
我需要为每个可以初始化的类编写构造函数,birdType
这是我不太喜欢的部分。所以我的问题是如何getType()
在抽象类中实现该方法,以便它返回类的名称和/或对象的名称。我不确定在我的示例中哪个会更好,类具有鸟类的名称,但考虑到它,我认为返回对象名称可能更有意义。