【问题标题】:Is there any way to call superclass's method on a subclass object without going through the subclass method of the same name?有没有办法在不通过同名子类方法的情况下调用子类对象上的超类方法?
【发布时间】:2015-11-05 09:15:12
【问题描述】:

如果我有一个超类和子类如下

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上的子类方法而不必经过同名的子类方法呢?

附言这个问题来自于 UCB 的 Java 数据结构课程的一个小作业。 第四部分,第三题。 CS 61B Lab 5

【问题讨论】:

  • 你的问题不清楚。 without having to go through the subclass method of the same name - 这是什么意思?
  • 我认为没有人想到过有效的用例,通常会设计一个类层次结构,其中方法被明确设计为被覆盖。
  • 如果您发现自己经常调用super. 方法,您可能应该停下来重新考虑您的设计。
  • @Rehman 很抱歉造成混乱。这是 UCB 的 Data Structure in Java course's assignment 中的一个小问题,第四部分,问题 3。link 在我的理解中,这意味着不直接在子类的方法定义中调用 'super.someMethod()'。

标签: java object-oriented-analysis


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-22
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    相关资源
    最近更新 更多