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

如何从嵌套类访问超类方法?

冀越
2023-03-14
问题内容

我希望这段代码可以说明问题:

class Foo {
    void a() { / *stuff */ }
}

class Bar extends Foo {
    void a() { throw new Exception("This is not allowed for Bar"); }

    class Baz {
        void blah() {
            // how to access Foo.a from here?
        }
    }
}

我知道我可能做错了什么,因为继承可能不应该以这种方式使用。但这是我遇到的最简单的方法。而且,除此之外,我很好奇。可能吗?


问题答案:

Bar.super.a() 似乎起作用。

根据JLS第15.12节

班级名称 。超级。NonWildTypeArguments_opt标识符(ArgumentList_opt)

是有效的MethodInvocation



 类似资料:
  • 此类的目的是模拟二进制搜索树的功能。在下面的代码中,我试图将它从一个结构和一堆函数改编成一个包装类,称为BST。但是,我不确定的一件事是如何从节点结构中访问“根”。Root当前在BST类中声明。 具体来说,在show函数中。它不像把它和其他函数放在节点中那样简单,因为根需要是唯一的,并且新节点至少被调用一次。Show将不会在当前状态下编译,我不确定从这里开始。

  • 我的子类是,我需要在我的超类中使用字段和。我知道如何在子类中使用超类变量,但我必须学会如何做相反的事情?谢谢。

  • 我有两个不同包的亲子班。我正在重写受保护类型的方法。我想访问子类中的超类保护方法。 考虑以下代码: 认为我是Java新手,并在main方法中提供替代comment的答案。

  • 我正在开发一个计算圆形和方形(类)面积的小练习java程序,该程序实现了surface(接口),它有一个名为area()的方法。我需要实现一个名为SumArea的类,该类有一个名为Calcrea()的通用方法,该方法接收Circle circ[]和Square Square[]数组,并执行面积计算 程序结构: - urface.java quare.java 圆圈java rea.java 我怀疑

  • 我以为我对自己正在做的事情有很好的把握,但每当我觉得我对某事有很好的把握时,我被证明是错的:) 当我不在匿名类中时,我可以简单地执行 有人能解释为什么我可以调用方法,但不能在intent参数中使用吗?

  • 问题内容: 我试图尽可能简化我的困境。我有三节课: Α: Beta: 主要: 我希望我不要过分简化。我的问题是如何从Alpha中的方法访问cBeta.DoSomethingBeta()? 问题答案: 你需要以某种方式为Alpha类提供对cBeta的引用。有三种方法可以做到这一点。 1)在构造函数中为Alphas提供Beta。在Alpha课堂上写道: 并从main()调用cAlpha = new A