Java中权限控制区分

private、public、protected 这三者大家都不会感到陌生。访问权限的修饰词,给类中的每一个成员定义一个使用范围,但是在使用的时候,可能有人不会太在意他们的区分,在某些情况下,不进行区分也许都是可行的,但是却不一定是最好。可能,一时也不会暴露出什么问题,但是,当项目变得庞大而复杂的时候,这样做就有可能留下了隐患或者缺陷。这虽然是一个细节,但是细节往往就是决定成败的因素。所以,还是有必要理清一下它们的概念和区分,以便在实际使用中,应用到位。

修饰词的区分

缺省状态下

在新定义一个成员的时候,如果没有设定一个访问权限,那么它默认是包访问权限(有时也表示为friendly),即在同一个package里都能进行访问、使用。

public

public的权限是接口访问权限。即在同一目录下,只要声明了该对象,就可以使用它。

private

private的访问权限是私有的,只有在同一个类下,其他类是无法调用被定义为private的成员的。这样的定义可以很好地隐藏底层的具体实现,比如如下用法:

public class A{
    private A(){
    }
    static A getA(){
        return new A();
    }
}

public class Main(){
    
public static void main(String[] args){
    A a = new A();
    a.getA();
}
}

protected

首先,它的定义是包访问权限,即同一个包里,它是可以被访问的;其次,继承的时候它也将被继承。这里需要说明的是,private在继承的时候是不会被继承的,而public是只要在同一个目录下就能访问的,相对来说,protected会比较有意思一点。

总结

其实,用一张表格就可以很清晰的区分它们。

修饰词当前类同一个package里子类其他package里
privateXXX
默认缺省XX
protecteX
public

在实际应用中,我们还是要根据实际情况进行选择,不能图方便省事给个能用的就行。。以上内容来源于《JAVA编程思想》第四版总结出来的,如果不正确的地方欢迎指出。

更多精彩内容可关注我的博客,更新相对及时传送门

转载于:https://www.cnblogs.com/JarvisHuang/p/5567235.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值