![](/img/trans.png)
[英]Java: How to access implementation of a method of Sub class from Super class
[英]Access Super Class from Outside in Java
我想知道是否有可能在派生类之外显式访问Java中的超类方法。 以下C ++代码说明了这一点:
#include <iostream>
using namespace std;
class A {
public:
virtual void f( ) {
cout << "A\n";
}
};
class B : public A {
public:
void f( ) {
cout << "B\n";
}
};
int main( ) {
B b;
b.A::f( );
return 0;
}
此代码输出“ A”,因为它显式调用f的A版本。
我知道这是可怕的设计,并且完全破坏了封装,但是在Java中这可能吗?
不,没有直接执行此操作的方法,但是,您可以在b内编写一个函数来调用a的f()。
class a {
public void f() {
System.out.println("hi");
}
}
class b extends a {
public void f() {
System.out.println("hi2");
}
public void f2() {
super.f();
}
}
注意,您不能从b
访问a的f()
,但是f2()
调用super.f()
; 换句话说,从b内部调用超类a。
super
是超类的调用,虽然不能从外部调用它,但是您可以以可以在内部调用它的方式设计该类。
您无法在Java中执行此操作。 当您使用C ++进行此操作时,您就知道自己在做什么,所以这不是问题。 Java实际上允许通过反射API访问私有方法和字段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.