0

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

class MyClass {
    protected String name;
}

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

MyClass mc = new MyClass();
mc.name = "foo";

但它工作正常。当我创建 memberprivate时,它按预期工作。这怎么可能?

一些注释,但我认为它们不应该有任何区别:

  • mca 内HashMap
  • 我在里面访问它Activity
4

2 回答 2

6

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

请参阅访问控制

于 2013-10-07T20:05:35.553 回答
2

oracle 文档将 protected 定义如下:

protected 修饰符指定该成员只能在其自己的包中访问(与 package-private 一样),此外,它的类在另一个包中的子类也可以访问。

看到这个链接

这意味着如果您将您的班级移动到另一个包,您将无法访问该名称。

于 2013-10-07T20:07:57.280 回答