我创建了一个具有少量protected
成员的类,其他类完全可以访问:
class MyClass {
protected String name;
}
在我看来,这不应该编译:
MyClass mc = new MyClass();
mc.name = "foo";
但它运作正常。当我创建成员private
时,它按预期工作。怎么会这样?
一些注释,但我认为它们应该没有任何区别:
mc
位于HashMap
,Activity
答案 0 :(得分:6)
protected
成员可以在子类(相同或不同的包)中访问,可以在同一个包中的所有类。如果将该代码移动到其他包中,您将获得预期的行为。
请参阅Access Control。
答案 1 :(得分:2)
oracle文档定义受保护的跟随者:
protected修饰符指定只能在自己的包中访问该成员(与package-private一样),此外,还可以在另一个包中通过其类的子类访问。
请参阅此Link
这意味着如果您将班级移至另一个套餐,则无法访问该名称。