验证测试
(1)定义一个order 类 ,其中包涵四种权限修饰符属性 以及方法
private int orderPrivate; int orderDefault; protected int orderProtect; public int orderPublic;
如;
d
package day07;
/**
* @author chao
* @create -05-2022-05-31-14:58
*/
public class Order {
private int orderPrivate;
int orderDefault;
protected int orderProtect;
public int orderPublic;
private void methodPrivate(){
orderPrivate=1;
orderDefault=2;
orderProtect=3;
orderPublic=4;
}
void methodDefault(){
orderPrivate=1;
orderDefault=2;
orderProtect=3;
orderPublic=4;
}
protected void methodProtect(){
orderPrivate=1;
orderDefault=2;
orderProtect=3;
orderPublic=4;
}
public void methodPublic(){
orderPrivate=1;
orderDefault=2;
orderProtect=3;
orderPublic=4;
}
}
(2)同一个包进行测试
测试一
package day07;
package day07;
/**
* @author chao
* @create -05-2022-05-31-15:02
*/
public class OrderTest {
public static void main(String[] args) {
Order order=new Order();
order.orderPublic=1;
order.orderProtect=2;
order.orderDefault=3;
//出了Oder类 ,私有结构不可以被调用
// order.orderPrivate=3;//属性不可见,无法调用
//order.methodPrivate(); //方法也不可以调用
order.methodDefault();
order.methodProtect();
order.methodPublic();
}
}
结论:可以发现同一个包,但是出了Oder类 ,无法使用Private 结构和属性
(3)测试二
在不同包进行测试 ,但是该测试继承了Order
package day28;
import day07.Order;
/**
* @author chao
* @create -05-2022-05-31-15:25
*/
public class SubOrder extends Order {
public void method(){
orderPublic=1;
orderProtect=2;
methodPublic();
methodProtect();
//在不同包的子类中,不能调用oder类中声明为private和 缺省结构和属性
// orderPrivate=3;
// orderDefault=4;
//
// methodPrivate();
// methodDefault();
}
}
结论:在不同的包中,存在继承关系 时,不能够调用 Order类声明的private 和 default缺省结构和属性
(4)测试三
在不同包并且没有继承关系
package day06;
import day07.Order;
/**
* @author chao
* @create -05-2022-05-31-15:09
*/
public class OrderTest {
public static void main(String[] args) {
Order order=new Order();
order.orderPublic=1;
order.methodPublic();
//不同包下也不是子类 没有继承Order 不能调用protect 属性结构和方法
// order.orderProtect=2;
// order.methodProtect();
//出了day07包 ,在day06包使用default结构无法使用
// order.orderDefault=2;//can not be accessed from outside package
//出了Oder类 ,私有结构不可以被调用
// order.orderPrivate=3;//属性不可见,无法调用
//order.methodPrivate(); //方法也不可以调用
// order.methodDefault();//can not be accessed from outsi
}
}
结论:在不同的包,也不具有继承关系时 ,只能直接调用 Order类中声明为public的属性 与结构
(5)测试四;
当出了同一个模块,在不同模块调用Order类时,
此时创建对象直接提示报错 ,提示Add dependency on module "day04",此时无法使用order类
,此时需要用到jdk9新特性 中的模块化系统 ,使用模块依赖才能使用Oder类。
总结:(1)出了当前类 :无法使用private修饰符修饰的属性与结构
(2) 出了同一个包,但具有继承关系 ;无法使用 privateh和 default修饰符修饰的属性与结构
(3)出了同一个包,并且无继承关系 只能使用 public修饰符修饰的属性与结构
(4)出了同一模块 即无法使用 Order ,无法创建Order对象