使用子对象Java访问父字段 我的背景是C++,我们可以用子类对象访问父类的公共字段。例如: #include <iostream> class A{ public: void show(){ std::cout << "A"; } }; class B:public A{ public: void show(){ std::cout << "B"; } }; int main(){ B obj; obj.A::show(); // it will print A. }
我还有另一个关于覆盖的问题,但由于Stackoverflow规则,我将作为单独的问题提问 那么,打印/访问带有子类对象引用的Java父类方法的语法应该是什么呢? 我试过了<代码>obj.super.show()代码>等,但不起作用。只能在类中与一起使用。不在它之外 由于使用ovveride,所以不能直接调用super方法 你只允许这样做使用子对象Java访问父字段 我的背景是C++,我们可以用子类对象访问父类的公共字段。例如: #include <iostream> class A{ public: void show(){ std::cout << "A"; } }; class B:public A{ public: void show(){ std::cout << "B"; } }; int main(){ B obj; obj.A::show(); // it will print A. },java,c++,Java,C++,我还有另一个关于覆盖的问题,但由于Stackoverflow规则,我将作为单独的问题提问 那么,打印/访问带有子类对象引用的Java父类方法的语法应该是什么呢? 我试过了obj.super.show()等,但不起作用。只能在类中与一起使用。不在它之外 由于使用ovveride,所以不能直接调用super方法 你只允许这样做 obj.show(); 如果您仍然想要调用超级方法,您可以将您的方法修改为 @Override public void show(){ super
obj.show();
如果您仍然想要调用超级方法,您可以将您的方法修改为
@Override
public void show(){
super.show();
System.out.println("Testing");
}
更新:
转到父级和子级重写返回类型
这篇文章可能会有所帮助
SURESH为什么我不能在main中调用super?由于static关键字?No.
super
只能在子类中,不能在该类的外侧。@Suresh但main也在子类中。@LetDoit在这种情况下,是因为static。您只能在子类的实例方法和构造函数中使用super。不在静态方法中。Ok在短时间内无法直接访问父类字段。让我在阅读你的链接之后再问另一个问题。在C++中隐藏基类的实现是一个坏主意。
@Override
public void show(){
super.show();
System.out.println("Testing");
}