提问人:Ray 提问时间:12/25/2022 最后编辑:Ray 更新时间:12/25/2022 访问量:52
在 Java 中重写时,有没有办法在特定类中调用方法?
Is there a way to call a method in a specific class when overriding in Java?
问:
我想实现以下功能,其中大写字母表示类型:
// Recursive functions with base case omitted
Class A {
X f1(Y y) { ... AA aa = this.f2(Z z); ... }
AA f2(Z z) { ... X x = this.f1(Y y); ... }
Class B extends A {
@Override
X f1(Y y) { ... AA aa = this.f2(Z z); ... }
@Override
AA f2(Z z) { ... AA aa = super.f2(Z z); X x = this.f1(Y y);... }
}
但是,当我调用 时,会在 中调用。是否有一些特殊的语法/关键字(而不是这个)允许我总是调用?new B().f2(z)
B::f1
A::f2
A::f1
A::f2
我知道您可以重新实现相同的功能,但我想避免这种情况
答:
0赞
knittl
12/25/2022
#1
不,Java 是不可能的。如果某个方法被重写,则在类实例上调用该方法将调用最具体的方法。这称为 frage 基类问题。
C# 引入了关键字来解决这个问题,但 Java 没有提供这种可能性。new
上一个:如何继承和初始化父类方法
评论
A::f1
f3
A::f1
f3
A::f2
f3
f1