父类访问子类Java的受保护成员

父类访问子类Java的受保护成员,java,subclass,protected,Java,Subclass,Protected,我有以下代码,我认为Oracle的教程并没有完全解释这些代码 package visibilidad; import otropaquete.*; public class ejemplo2 extends Test { protected int prot = 4; } package otropaquete; import visibilidad.*; public class Test { public void metodopublico() {

我有以下代码,我认为Oracle的教程并没有完全解释这些代码

package visibilidad;

import otropaquete.*;

public class ejemplo2 extends Test {
    protected int prot = 4;
}



package otropaquete;

import visibilidad.*;

public class Test {
    public void metodopublico() {
        ejemplo2 a = new ejemplo2();
        System.out.println(a.prot);
        Hija b = new Hija();
        System.out.println(b.prot);
    }
}

class Hija extends Test {
    protected int prot = 3;
}
基本上,我要做的是从父类访问子类的受保护成员。有趣的是,当子类在另一个包中定义并且 如果子类在同一个类中定义,则可以完美运行


我想知道标准中是否考虑了这种行为。

受保护的
修改器也允许从同一软件包访问。请参阅。

受保护的
修改器也允许从同一软件包进行访问。请参阅。

Java
中有4种不同的访问修饰符:

(无修改器)-对包可见

(专用)-仅对类可见

(公共)-世界可见


(受保护)-对包和所有子类可见

这是一个


使用
protected
修饰符意味着只有该包的其他
类和
子类可以访问字段/方法。在您的情况下,来自同一个包的类工作正常,而来自不同包的类抛出编译时错误,这正是应该发生的情况。

Java
中,有4种不同的访问修饰符:

(无修改器)-对包可见

(专用)-仅对类可见

(公共)-世界可见


(受保护)-对包和所有子类可见

这是一个

使用
protected
修饰符意味着只有该包的其他
类和
子类可以访问字段/方法。在您的情况下,来自同一个包的类工作正常,来自不同包的类抛出编译时错误,这正是应该发生的。

非常明确:
受保护的
字段可以在类、包和子类级别访问。由于父类既不是子类,也不在同一个包中,因此该字段不可访问,并且您将得到一个编译错误

Oracle文档中的访问级别表:

               Access Levels
Modifier    Class   Package Subclass    World
public      Y       Y       Y           Y
protected   Y       Y       Y           N
no modifier Y       Y       N           N
private     Y       N       N           N
非常明确:
受保护的
字段可以在类、包和子类级别访问。由于父类既不是子类,也不在同一个包中,因此该字段不可访问,并且您将得到一个编译错误

Oracle文档中的访问级别表:

               Access Levels
Modifier    Class   Package Subclass    World
public      Y       Y       Y           Y
protected   Y       Y       Y           N
no modifier Y       Y       N           N
private     Y       N       N           N

如果您遇到编译时错误,这显然是标准的,不是吗?是的,但是编译时错误读起来像“prot在ejbemplo2中具有受保护的访问”一样通用。我的意思是,如果考虑到这一点或只是将其留空,那么受保护的变量只能从同一个包中访问。对包和所有子类可见(受保护)。如果出现编译时错误,这显然是标准的,否?是,但编译时错误读作“prot在EJMPO2中具有受保护的访问权限”这样的泛型。我的意思是,如果考虑到这一点,或者只是将其留空,那么受保护的变量只能从同一个包中访问。对包和所有子类可见(受保护)。