免费访问受保护的成员

Bar*_*chs 0 java protected

我创建了一个类,它有几个protected成员,可以被其他类完全访问:

class MyClass {
    protected String name;
}
Run Code Online (Sandbox Code Playgroud)

在我看来,这不应该编译:

MyClass mc = new MyClass();
mc.name = "foo";
Run Code Online (Sandbox Code Playgroud)

但它工作正常.当我成为会员时private,它按预期工作.怎么会这样?

一些注意事项,但我认为它们应该没有任何区别:

  • mc里面HashMap,
  • 我在里面访问它 Activity

Roh*_*ain 6

protected成员可以在子类(相同或不同的包)中访问,也可以在同一个包中的所有类中访问.如果将该代码移动到其他包中,您将获得预期的行为.

请参阅访问控制.