Java 如何使用层次结构的父类中的方法?

Java 如何使用层次结构的父类中的方法?,java,oop,inheritance,Java,Oop,Inheritance,使用以下代码: public class Animal { public void a() { System.out.println("Animal"); } } public class Cat extends Animal { public void a() { System.out.println("Cat"); } } public class BlackCat extends Cat { public s

使用以下代码:

public class Animal {
    public void a() {
        System.out.println("Animal");
    }
}

public class Cat extends Animal {   
    public void a() {
        System.out.println("Cat");
    }
}

public class BlackCat extends Cat {
    public static void main(String[] args) {

        BlackCat blackCat = new BlackCat();
        blackCat.a();
    }
}
如何在子类中使用
BlackCat
方法
a()
来自
Animal
,而不是
Cat


我想在控制台中接收
Animal

我想您可以添加一个带有设置前缀的加法函数(本例),并将其用作您的“超级访问器”或任何您想调用的功能

public class Cat extends Animal {   
    public void a() {
        System.out.println("Cat");
    }
    public void _a() {
        super.a();
    }
}

Animal#a
被覆盖。因此,调用
black.a()
将调用
Cat\a
。如果您需要附加信息,只需在打印前在
Cat#a
中调用
super.a()
。您必须为其创建一个动物对象that@KevinEsche所以,你的意思是,如果不调用猫的方法a,我就不能直接使用动物的方法a?非常相关的检查此链接,谢谢你的评论。但问题是,我可以直接使用父类中的方法来实现层次结构吗?不改变动物和猫的等级。我想我是不允许这样做的。@BohdanMyslyvchuk不,如果你的对象不代表一个实际的类
动物
。如果你能做到这一点,你就会违反法律的规定polymorphism@BohdanMyslyvchuk不,对不起,在您的示例中,Cat中的方法a()是Animal中的方法a()。它是java中的一部分