JAVA中访问权限protected与default的区别在哪里?请举反例说明。
时间: 2024-04-07 15:30:02 浏览: 92
在Java中,访问权限修饰符有四种:public、protected、default(即没有修饰符)和private。protected访问权限和default访问权限之间存在一些区别。
protected访问权限允许子类访问父类中的成员,而default访问权限只允许同一包中的其他类访问该成员。这意味着,如果一个类的成员被声明为protected,它可以在该类的子类中被访问,无论子类是否与父类在同一包中。
下面是一个示例来说明这个区别:
```java
package com.example.package1;
public class Parent {
protected int protectedVariable = 10;
int defaultVariable = 20;
}
package com.example.package2;
import com.example.package1.Parent;
public class Child extends Parent {
public void accessParentVariables() {
System.out.println(protectedVariable); // 子类可以访问父类的protected成员
}
}
package com.example.package3;
import com.example.package1.Parent;
public class OtherClass {
public void accessParentVariables() {
Parent parent = new Parent();
System.out.println(parent.protectedVariable); // 不同包中的其他类无法访问protected成员
System.out.println(parent.defaultVariable); // 不同包中的其他类无法访问default成员
}
}
```
在上面的例子中,Child类可以访问Parent类中声明为protected的变量protectedVariable。然而,OtherClass类无法访问Parent类中的protectedVariable和defaultVariable,因为它们在不同的包中。
这就是protected访问权限和default访问权限之间的区别。
阅读全文