咖啡豆(JavaBean)•属性私有,方法共有

方法为了供他人调用所以需要写成共有的,这无需赘言,下面重点说说属性那档子事儿。

交代背景:

最先接触这一规范是在.Net中写实体类的时候,当时就非常奇怪为什么不在实体中直接将变量定义为共有,这样的话在其他的方法调用实体类的时候同样可以为实体中某个变量赋值或取得实体类中的某个变量的值。那样的话代码量明显减少而且和写getset方法的效果极其的相似。

代码1:在实体类中加属性方法

 


 

代码2:在实体使用公共变量

 


 

但是在调用的时候都可以满足基本传递数值的作用。

 

产生这么相似结果的原因就是C#这个语言设计的太人性化了,在给属性赋值或者取属性的值的时候直接就可以用类名“点”出来。而java就没有那样做

JavaBean中属性代码

 


 

java更加接近于机器的思想,在写属性的时候需要写setget方法,而且给属性赋值以及取得属性值的时候必须调用这两个方法。相比较C#而言,这样使得编程人员更容易区分属性和公共变量。

PSC#(或者说Net)和java各有各的好处吧,C#更加人性化,说白了就是更傻瓜一点,把很多东西都隐藏起来了,可以帮助开发人员快速的进行开发;而java是给编程人员暴露了很多东西,虽然使得初学者学起来明显感觉知识庞大,但是为以后更深入的理解代码做好了铺垫(笔者觉得这点至关重要)。

分析如下:

试想这么一个场景,你的名字叫做张三,首先这是父母给的名字,那么这个名字一旦确定就不应该随便更改(并不是一定不能改)那么在改的过程中就应该判断一下了,假如别人把你的名字改为“狗剩”之类不雅之词恐怕你不一定愿意,但是改成一个好听的么名字你兴许就会考虑考虑了。

 

下面用代码的方式思考上面的场景:

父母起名字类似于初始化JavaBean(或者说一个类)的时候为其一个属性进行赋值,在这个故事中名字就是你的一个属性(它应该保存在一个内部变量中)。而你自身有一个方法叫做“我想改名(新名字)”

这样的话代码1的解释就是:某人给你改名字,然后你直接就把他给的字符串改为自己的名字,这是多么恐怖的一件事情,本来属于你的东西别人竟然可以随便更改!

代码2的解释就是:某人给你改名字,在得到这个字符串后,你考虑了一下这个名字是否是个好名字然后再决定是不是进行更改,nice

聪明的你已经可以看出来哪个代码更有道理了。好了,这下清楚了,把变量定义成私有防止别人胡乱更改,但是如果真的需要更改就通过共有的方法进行更改,在方法中加上必要的些判断防止他人胡乱更改。

综上所述:

属性私有是为了安全封装,方法共有是为了方便调用

posted @ 2012-02-25 01:33  郗晓勇  阅读(600)  评论(2编辑  收藏  举报