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中的一部分