java的家族中为什么很多方法或者属性被设置为private详解

问题描述:

     大家都知道,javaBean的属性定义为pirvate,然后提供get set方法

我可以定义成public,不提供get set方法,这样也是可以的呀,为什么还要定义为private?

解释:

     就我的理解,语言本身来讲,你只是简单存取下数据,也不考虑什么对象啊之类的各种概念,当然可以直接public掉,来尽快的完成程序功能即可。

考虑到所谓的面向对象的概念了嘛,你当然要懂得保护自己,不能把自己的属性这样的个人隐私public掉,让别人随意弄你。这个时候提供get/set方法给别人去用当然更好点,你可以在get/set里面搞其它小动作,嘿嘿。

再考虑到模式啊,切面啊之类的很多对我们真实“堆”代码情况下的冗余设计,那肯定得“脱下裤子再放屁”咯哈。

其实说白了,你完全可以直接public掉属性然后各处来用,语言本身没不许你裸的规则,当然大多数时候你也可以全裸上阵。就是有时候把,你已经全裸各处上阵了,遇到个要set/get前做些小动作的时候,你就傻眼了。

而且现在大多数开发,都是依赖于各种已有的库,框架来开发的。你这样一个突然出现的全裸异类,可能得不到人家已有库/框架的支持。

在get/set里面搞其它小动作,能搞什么小动作呢?

     日常中最常见的是这么一种情况:状态(status)字段,用的数字1,2,3这样的标识出来数据所处的状态,可是到页面显示,要显示“正常/失败/成功“这样的文字,这个时候一般就会定义一个属性(statusTxt),然后不提供set方法,在get的里面,直接拿到状态(status)然后根据1,2,3的对应关系,返回对应的文字。

顺便在这里提一下泛型:

private ArrayBlockingQueue<Request> queue;
Request request = queue.take();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值