我有父子关系类和一个覆盖方法我想只显示父类方法。
class Parent{
public void display(){
System.out.println("Parent class display....");
}
}
class Child extends Parent{
public void display(){
System.out.println("Child class display....");
}
}
public class Demo {
public static void main(String... args) {
Parent parent = new Child();
parent.display();
}
}
所需输出: - 父类显示....
这可能吗?
答案 0 :(得分:1)
直接,没有。要访问超类实现,您必须以某种方式公开它,否则它根本不在外部可见。有几种方法可以做到这一点。
调用超级的儿童方法
您可以向Child
添加一个调用Parent
display()
的实施方式的方法:
public void superDisplay()
{
super.display();
}
您必须转发您的引用才能拨打电话:
((Child)parent).superDisplay();
请注意,向调用Parent
的{{1}}添加方法无济于事,因为多态性会导致display()
实例调用Child.display()
。
在扩展swing组件时常用类似于此技术的东西,其中Child
的孩子的实现经常调用paintComponent()
。
<强>反射强>
虽然通常是表示设计不良的kludge,但反射会为您提供您想要的。只需获取super.paintComponent()
类的display
方法并在Parent
实例上调用它:
Child
答案 1 :(得分:-1)
如果您只是寻找方法,可以在两个类中声明display()
方法为static
。
public static void display(){
}