2015-11-05 54 views
1

如果我有一个超类和子类如下有没有办法在不通过相同名称的子类方法的情况下在子类对象上调用超类的方法?

class Superclass { 
    public void someMethod() { 
     System.out.println("superclass called here"); 
    } 
} 

class Subclass extends Superclass { 
    public void someMethod() { 
     System.out.println("subclass called here"); 
    } 
} 

假设我有一个对象,它的类是子类,说Subclass sc = new Subclass();。我知道我可以在子类的方法中使用super.someMethod();来调用超类的方法。但有没有什么办法可以在对象sc上调用supclass方法,而无需通过同名的子类方法?

p.s.这个问题来自UCB的Java数据结构课程的一小部分。 第四部分,问题三。 CS 61B Lab 5

+1

你的问题不清楚。 '而不必通过同名的子类方法' - 这是什么意思? – Rehman

+0

我认为从来没有人想到过这种有效的用例,通常是设计一个类层次结构,其中方法被明确地设计为被覆盖。 – Smutje

+0

如果你经常发现自己调用'super.'方法,你应该停下来重新考虑你的设计。 – biziclop

回答

0

不,这是不可能的。此外,从面向对象的角度来看,祖先类不应该知道他们的后代,所以如果你需要这样的东西,那么最好重新设计你的类。

编辑:也许有可能使用一些类路径遍历和反射来实现,但我强烈不建议这样做(见上文)。