Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我创建了一个类,它有几个protected成员,其他类可以完全访问:
protected
class MyClass { protected String name; }
在我看来,这不应该编译:
MyClass mc = new MyClass(); mc.name = "foo";
但它工作正常。当我创建 memberprivate时,它按预期工作。这怎么可能?
private
一些注释,但我认为它们不应该有任何区别:
mc
HashMap
Activity
protected成员可在子类(相同或不同包中)和同一包中的所有类中访问。如果您将该代码移动到不同的包中,您将获得预期的行为。
请参阅访问控制。
oracle 文档将 protected 定义如下:
protected 修饰符指定该成员只能在其自己的包中访问(与 package-private 一样),此外,它的类在另一个包中的子类也可以访问。
看到这个链接
这意味着如果您将您的班级移动到另一个包,您将无法访问该名称。