Java 受保护访问修饰符

Java 受保护访问修饰符,java,protected,Java,Protected,为受保护成员的包访问提供以下限制 对象的受保护成员或构造函数可以从 在仅由以下代码声明的包之外 负责实现该目标 它们的意思是负责实施。你不能举个例子吗?这意味着你不能访问同一个类的不同实例的受保护的超类成员 package one; public class A {protected int b;} package two; public class B extends A { public void someMethod (A other) { b = 5;

为受保护成员的包访问提供以下限制

对象的受保护成员或构造函数可以从 在仅由以下代码声明的包之外 负责实现该目标


它们的意思是负责实施。你不能举个例子吗?

这意味着你不能访问同一个类的不同实例的受保护的超类成员

package one;
public class A {protected int b;}

package two;
public class B extends A {

    public void someMethod (A other)
    {
        b = 5; // allowed
        other.b = 5; // not allowed
    }
}

这是不对的。类代码可以访问所有类的受保护字段instances@DThought类代码可以访问自己类的任何字段(即使是私有的),但是只能对同一实例访问属于不同包的超类的受保护字段。您是否确实尝试过您给出的示例?我做到了,eclipse允许我很高兴地修改我的other.test字段,它是超类中的一个受保护字段。AFAIK类所包含的包仅与“默认”访问相关modifier@DThought是的,我修复了我的代码示例(更改了方法签名)。@d尽管类所包含的包在这里是相关的,因为包私有访问比受保护访问更强大。这意味着,如果两个类位于同一个包中,则受保护的行为与包私有的行为完全相同。