当前位置: 首页 > 面试题库 >

在Java中,如何从派生类中的重写方法中调用基类的方法?

家浩瀚
2023-03-14
问题内容

我有两个Java类:B,它扩展了另一个类A,如下所示:

class A {
    public void myMethod() { /* ... */ }
}

class B extends A {
    public void myMethod() { /* Another code */ }
}

我想打电话A.myMethod()B.myMethod()。我来自C++界,我不知道如何用Java做这个基本的事情。


问题答案:

您要寻找的关键字是super。例如,请参阅本指南。



 类似资料:
  • 问题内容: 我有以下代码片段: 执行代码时出现异常: 我不明白为什么会有和例外。有人可以帮助我理解吗? 您可以在此处检查代码。 问题答案: 创建一个对象,这意味着首先调用其超类构造函数,然后依次调用-但您已覆盖它,因此它是该方法的子版本。在该方法中,您调用尚未初始化的。 结论:在构造函数中调用可重写方法几乎从来不是一个好主意。

  • 代码:- 在这里,当我用mydog对象调用eat()方法时,它会打印出“dog eating”,有没有办法用mydog对象调用base Animal类的eat()方法,比如有没有像这样的东西 我不想使用super(),因为这样它也会从child类调用eat(),所以它会同时打印语句“animal eating”和“dog eating”,这是我不想要的,我想一次只调用一个语句。

  • 问题内容: 因此,此代码的输出为。现在,我想到了一个问题:作为 派生 类对象的 po 怎么能调用作为基类的 PrivateOverride 的私有方法? 问题答案: 因为您在类中定义了main方法。如果将main方法放在Derived类中,它将无法编译,因为在该类中不可见。 class中的po.f()调用不是多态的,因为in 类为,所以in class中的值不会被覆盖。

  • 问题内容: 请参考下面的Java代码: 看到的输出是: 我认为发生var = 0是因为派生对象已初始化一半;类似于乔恩·斯基特在这里说的话 我的问题是: 如果尚未创建Derived类对象,为什么要调用重写的方法? var在什么时间点分配值为0? 是否有任何需要这种行为的用例? 问题答案: 该对象 已 被创建-它只是在构造函数尚未运行。对象的类型在创建后即刻就不会在Java中更改,这发生在所有构造函

  • 我可以写: 但这当然不起作用,因为调用返回的是而不是我想要的。 我可以通过在(以及和等)中键入类型并抑制警告来避免这个问题,但是即使只有(比方说)10个扩展的实体类,这仍然是为了键入而编写的样板代码。此外,我认为,如果我必须为每个派生类编写代码(无论多么小)(也会有其他类似的方法),那么拥有类层次结构的好处就会丧失很多。 对此有更好的解决方案吗? 更新:使用Java7。

  • 问题内容: 我正在寻找此代码将输出: 但是我得到了: 我了解在B的上下文中,A.f1(String)中的“ this”是B的实例。我是否可以选择执行新的链B1()。f1(String)->(A’s)f1(String)->(A’s)f1(int,String)? 这是一个理论问题,实际上,解决方案显然是在A中实现f1(String)和f1(int,String)都将调用的私有函数。 谢谢你, 马克