指向Child类Object的父类引用。仅调用父类方法(JAVA)

时间:2015-12-31 23:03:34

标签: java inheritance

我有父子关系类和一个覆盖方法我想只显示父类方法。

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();
    }
}

所需输出: - 父类显示....

这可能吗?

2 个答案:

答案 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(){
}