Java:如何调用主类中的方法,而该方法位于扩展抽象类的另一个类中



我被要求创建一个主方法,允许我创建狼对象、鹦鹉对象和犀牛对象,我为这些动物中的每一个都创建了类,它们扩展了抽象类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()的不同实现。

相关内容

  • 没有找到相关文章