我被要求创建一个主方法,允许我创建狼对象、鹦鹉对象和犀牛对象,我为这些动物中的每一个都创建了类,它们扩展了抽象类animal,其中包含一个抽象方法makeNoise()。我已经在我的rhino、鹦鹉和wolf类中实现了这个抽象方法,该方法包含一个System.out.println函数和与这些动物相关的噪声。例如,我的鹦鹉类(扩展了animal)包含一个方法makeNoise(),它打印出"squawk"。
我被要求证明,我可以对主类中的每个动物对象调用makeNoise方法,我该如何做到这一点?
public class Main() {
Wolf myWolf = new Wolf();
//I want my wolf to make a noise here
Parrot myParrot = new Parrot();
//I want my parrot to make a noise here
Rhino myRhino = new Rhino();
//I want my rhino to make a noise here
}
您的代码甚至不是有效的Java,您混合了类和方法语义(很可能还有它们背后的概念)。
您的类将需要一个主方法,使您的类可以从外部执行。
public class Main {
Wolf myWolf = new Wolf();
Parrot myParrot = new Parrot();
Rhino myRhino = new Rhino();
public static void main(String[] args) {
myWolf.makeNoise();
myParrot.makeNoise();
myRhino.makeNoise();
}
}
public class Main
{
Animal myWolf = new Wolf();
Animal myParrot = new Parrot();
Animal myRhino = new Rhino();
public void someMethod() {
System.out.println(myWolf.makeNoise());
System.out.println(myParrot.makeNoise());
System.out.println(myRhino.makeNoise());
}
}
因为Animal是一个具有抽象方法makeNoise()
的抽象类,所以可以使用抽象类本身并为其分配实现所述方法的任何子类。不同的分配证明了多态性,其中makeNoise()
可以具有不同的解释。因此,将Parrot
更改为Rhino
将导致makeNoise()
的不同实现。