Java学习(权限修饰符)

Java语言提供了三种权限修饰符public、private以及protected,一共有四种权限。

public

我们先来看一下public。public的意思是公有的,从字面意思来看它应该是所有人可见的。通过代码来看一下:

public class Demo{

}
public class DemoTest{
    public static void main(String args[]){
        Demo demo = new Demo();
    }
}

通过将Demo类和DemoTest类放在相同的包以及不同的包进行测试,我们可以发现无论DemoTest类是不是和Demo类同包都可以访问到Demo类。

不加修饰符

不加修饰符在Java中其实也是一种权限,从理论上来看,我们即没有对它进行大肆宣扬(public),也没有对它进行过分保护(private),所以应该是附近人可见。通过代码观察一下:

class Demo{
    
}
public class DemoTest{
    public static void main(String args[]){
        Demo demo = new Demo();
    }
}

通过将Demo类和DemoTest类放在相同的包以及不同的包进行测试可以发现,只有当Demo类和DemoTest类处于同一包时,DemoTest类才可以访问到Demo类。

protected

由于Java中类(外部类)的声明不支持protected,所以我们定义一个test()方法用protected修饰。protected的语义是受保护的,那它保护的对象是谁呢?从Java的继承性来看,我们可以猜测它保护的应该就是子类。下面通过代码进行测试:

public class Demo{
    protected void test(){
        System.out.println("test");
    }
}
public class DemoTest{
    public static void main(String args[]){
        Demo demo = new Demo();
        demo.test();
    }
}

先来测试一下非子类的情况。通过测试可以发现当Demo类和DemoTest类处于不同的包时demo无法访问到test()方法,当Demo类与DemoTest类处于同一包时可以正常访问到test()方法。

下面测试一下子类的情况:

public class Demo1 extends Demo{
    public static void main(String args[]){
        Demo demo = new Demo();
        demo.test();
    }
}

可以发现,无论Demo1和Demo在不在同一个包,Demo1都可以访问到test()方法。其实也不难理解,毕竟Demo1是继承Demo类的。

private

private语义是私有的,显然是只能用的。Java语言不支持private声明类,所以我们通过定义一个private修饰的test()方法来进行测试:

public class Demo{
    private void test(){
        System.out.println("test");
    }
}
public class DemoTest{
    public static void main(String args[]){
        Demo demo = new Demo();
        demo.test();
    }
}

无论Demo和DemoTest在不在同一包,都无法访问到test()方法。

总结

修饰符当前类同包子类(不同包)其它包
public可见可见可见可见
protected可见可见可见不可见
不加修饰符可见可见不可见不可见
private可见不可见不可见不可见

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值