Java 免费访问受保护的成员
我创建了一个类,它有几个受保护的成员,其他类可以完全访问这些成员:Java 免费访问受保护的成员,java,protected,Java,Protected,我创建了一个类,它有几个受保护的成员,其他类可以完全访问这些成员: class MyClass { protected String name; } 在我看来,这不应该编译: MyClass mc = new MyClass(); mc.name = "foo"; 但它很好用。当我将成员设置为私有时,它会按预期工作。这怎么可能 一些注释,但它们不应该有任何区别,我认为: mc位于HashMap中 我在活动中访问它 受保护的成员可以在子类(在相同或不同的包中)以及同一包中的所有类中访
class MyClass {
protected String name;
}
在我看来,这不应该编译:
MyClass mc = new MyClass();
mc.name = "foo";
但它很好用。当我将成员设置为私有时,它会按预期工作。这怎么可能
一些注释,但它们不应该有任何区别,我认为:
位于mc
中HashMap
- 我在
活动中访问它
受保护的
成员可以在子类(在相同或不同的包中)以及同一包中的所有类中访问。如果您将代码移动到另一个包中,您将获得预期的行为
请参阅。oracle文档将受保护定义为以下内容: protected修饰符指定成员只能在其自己的包内访问(与包private一样),此外,还可以由另一个包中其类的子类访问 看到这个了吗
这意味着如果您将类移动到另一个包中,您将无法访问该名称。这就解释了一切。谢谢我想它不同于C#/C++,这是我学习这个概念的地方。