存在问题
如果我有一个像这样的类层次结构:
public class TestSuper {
public static class A {
@Override
public String toString() { return "I am A"; }
}
public static class B extends A {
@Override
public String toString() { return "I am B"; }
}
public static void main(String[] args) {
Object o = new B();
System.out.println( o ); // --> I am B
// ?????? // --> I am A
}
}
在实例类型为B的情况下,是否可以从main方法调用A的toString?
当然,像o.super.toString()这样的东西不会编译…
您不能这样做,而且是非常故意的:它会破坏封装。
假设您有一个类,该类使用一种方法通过一些业务规则来验证输入,然后调用超类方法。如果调用方可以忽略该覆盖,那么它将使该类变得毫无意义。
如果发现自己需要这样做,请重新设计。
问题内容: 我想知道,当创建新类然后覆盖该方法时,在eclipse中我总是会自动添加:。这是怎么发生的?在抽象类或父类中是否有Java关键字会强制这样做? 我不知道不调用父类是否违法,但是我记得在某些方法中,我没有这样做就引发了异常。这也是Java内置的吗?您可以使用某些关键字来做到这一点吗?或如何完成? 问题答案: 这是-几乎所有评论的来源(原始- 参见〜800行 ): 因此,我的猜测是ADT
问题内容: 我正在使用具有3级类继承的代码。从最低级别的派生类开始,调用方法2向上层级的语法是什么,例如super.super调用?“中间”类未实现我需要调用的方法。 问题答案: 好吧,这是一种实现方式: 也许不是您想要的东西,但这是最好的python,除非我弄错了。您要问的内容听起来是反Python的,您必须解释为什么要这么做,以便我们为您提供快乐的python做事方式。 另一个示例,也许是您想
问题内容: 我有一个具有称为的私有方法的类。我想从外面打电话。我认为应该可以反思,但是我得到了。有任何想法吗??? 问题答案: 利用使用其之前的Method对象的方法。
问题内容: 因此,此代码的输出为。现在,我想到了一个问题:作为 派生 类对象的 po 怎么能调用作为基类的 PrivateOverride 的私有方法? 问题答案: 因为您在类中定义了main方法。如果将main方法放在Derived类中,它将无法编译,因为在该类中不可见。 class中的po.f()调用不是多态的,因为in 类为,所以in class中的值不会被覆盖。
问题内容: 是否可以从子静态方法调用超静态方法? 我的意思是,到目前为止,到目前为止,我有以下内容: 并且它可以工作,但是我想以一种通用的方式来做,就像调用super.loadState()一样,这似乎不起作用… 问题答案: 在Java中,静态方法不能被覆盖。原因在这里 得到了很好的解释 因此,它不依赖于被引用的对象。但是,它取决于引用的类型。因此,据说静态方法隐藏了另一个静态方法而不覆盖它。 例
问题内容: 如何使用C ++从派生类调用父函数?例如,我有一个名为的类,一个名为的类是从父类派生的。每个类中都有一个print函数。在定义孩子的打印功能时,我想调用父母的打印功能。我将如何去做呢? 问题答案: 我冒着明显的危险:调用该函数,如果它在基类中定义,则该函数在派生类中自动可用(除非它是private)。 如果派生类中有一个具有相同签名的函数,则可以通过在基类名称后加上两个冒号来消除歧义。