Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用子对象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++ - Fatal编程技术网

使用子对象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++,我们可以用子类对象访问父类的公共字段。例如: #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

我还有另一个关于覆盖的问题,但由于Stackoverflow规则,我将作为单独的问题提问

那么,打印/访问带有子类对象引用的Java父类方法的语法应该是什么呢? 我试过了<代码>obj.super.show()等,但不起作用。

只能在类中与一起使用。不在它之外

由于使用ovveride,所以不能直接调用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");
    }