Bhu*_*van 16 java inheritance visibility field
我有两节课Parent:
public class Parent {
public String a = "asd";
public void method() {
}
}
Run Code Online (Sandbox Code Playgroud)
而且Child:
public class Child extends Parent{
private String a = "12";
private void method() {
}
}
Run Code Online (Sandbox Code Playgroud)
在Child,我尝试覆盖父method,它给出了编译时错误,cannot reduce visibility of a method其中没有问题.
但是,为什么这个错误不适用于财产a?我也降低了可见度a,但它没有给出错误.
Uni*_*ron 24
这是因为Parent.a并且Child.a是不同的事情.Child#method() @Overrides Parent#method(),因为它们是方法.继承不适用于字段.
从Oracle JavaTM教程 - 继承,它被写成:
您可以在子类中执行的操作
- 继承的字段可以直接使用,就像任何其他字段一样.
- 您可以在子类中声明一个与超类中的字段同名的字段,从而隐藏它(不推荐).
- 您可以在子类中声明不在超类中的新字段.
use*_*751 11
你不能.您没有降低可见性a- 您正在创建一个新的,单独的字段,也称为a.