四种权限修饰符的理解与测试
Java 权限修饰符public、protected、default(缺省)、private 置于类的成员定义前,用来限定对象对该类成员的访问权限。
注意:对于class
对于 class 的权限修饰只可以用 public 和 default(缺省)。
public 类可以在任意地方被访问。 default 类只可以被同一个包内部的类访问。
应用举例
四种权限修饰,在包的内部都是可以访问到的
package com.tadx2.java1;
public class Order {
private int orderPrivate;
int orderDefault;
protected int orderProtected;
public int orderPublic;
private void methodPrivate(){
orderPrivate = 1;
orderDefault = 2;
orderProtected = 3;
orderPublic = 4;
}
void methodDefault(){
orderPrivate = 1;
orderDefault = 2;
orderProtected = 3;
orderPublic = 4;
}
protected void methodProtected(){
orderPrivate = 1;
orderDefault = 2;
orderProtected = 3;
orderPublic = 4;
}
public void methodPublic(){
orderPrivate = 1;
orderDefault = 2;
orderProtected = 3;
orderPublic = 4;
}
}
私有的权限在出了Order类以后,就不能访问到了
package com.tadx2.java1;
public class OrderTest {
public static void main(String[] args) {
Order order = new Order();
order.orderDefault = 1;
order.orderProtected = 2;
order.orderPublic = 3;
order.methodDefault();
order.methodProtected();
order.methodPublic();
//出了 Order 类之后,私有的结构就不可调用了
//order.orderPrivate = 4;
//order.methodPrivate();
}
}
不同的包下,Default和Private的权限是访问不到的。
package com.tadx2.java2;
import com.tadx2.java.Order;
public class SubOrder extends Order{
public void method(){
orderProtected = 1;
orderPublic = 1;
//在别的包下,Default和Private的权限是访问不到的。
//orderDefult = 1;
//orderPrivate = 1;
//methodDefault();
//methodPrivate();
}
}
出了不同的包的子类,Protected是访问不到的。 不同包下的普通类(非子类)要使用Order类,不可以调用声明为private/ default/protecetd权限的属性和方法
package com.tadx2.java2;
public class SubOrderTest {
public static void main(String[] args) {
SubOrder subOrder = new SubOrder();=
subOrder.orderPublic =1;
//出了不同包的子类,orderProtected是访问不到的
//subOrder.orderProtected = 1;
}
}