【发布时间】:2015-03-05 19:07:50
【问题描述】:
为什么同一个包的其他类可以访问Java类中的受保护属性?
我认为它只能通过继承来访问。
A.java
package abc;
class A {
protected int attr1;
}
B.java
package abc;
class B {
B() {
A obj = new A();
obj.attr1 = 2;
}
public static void main(String[] args) {
B obj2 = new B();
}
}
【问题讨论】:
-
您要问的是为什么他们有
private可见性修饰符。protected用于同一包中的类。 -
@DrewKennedy No. 默认可见性(即没有
private、没有public、没有protected)是包私有的。protected表示(AFAIK)只有子类可以访问它。它不是包私有的。 -
@newbiedoodle 受保护并不意味着只有子类可以访问它。
-
@peter.petrov 是的,刚刚查了一下。只是包外的任何类都拿不到。
-
@DrewKennedy 它们也可用于您定义的类的任何子类。
标签: java visibility keyword protected