java四种权限修饰符 (private 、default(缺省)、prote、public)适用范围

验证测试

(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对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值