日期:2014-05-20  浏览次数:20663 次

各位大哥,小女有个比较白痴的问题,请大家请教
就是java封装性的问题,我们一般定义私有变量,在定义get,set方法是为了外部不能改变这个变量,那这个外部相当于什么呢,使用户吗?用户可以看到代码吗?显然不能?那为什么定义私有变量,定义公有不是一样吗?在线等答案

------解决方案--------------------
封装的好处在于不让别人的程序错误的操作你对象的属性。

那这个外部相当于什么呢,使用户吗?
//客户端程序员、“别人的程序”
------解决方案--------------------

------解决方案--------------------
学习程序设计就是学会如何遵守基本的规则, 然后还要知道在什么时候需要打破这些规则

现在你只要遵守最佳实践就可以了
------解决方案--------------------
这是前人宝贵经验的积累,接触JAVA时间长了,你自然就明白了。现在要做的就如jk88811(你的就是我的,我的还是我的~!) 说的,遵守规则。^_^
------解决方案--------------------
外部就是outside current class。

为什么这样呢?这个是OOP的概念,封装性得好处不是几句话说得清楚地,还是读书吧,以后用得多了就明白了。

举个简单的例子吧,比如说,你写了一个Cat的class,公司的另一个团队用到了你的这个class。
//Version 1.0
class Cat {
public double weight;

// other methods
}

对一个Cat来说,weight应该是一个大于零的数。如果你使用了一个public variable,你就失去了对这个属性的保护。如果另一个团队在使用过程中,出现了错误,在找到错误之前,他们可能会认为是你写错了,那你可就麻烦啦……

//Version 2.0
class Cat {
private double weight;

public double getWeight()
{
return this.weight;
}

public void setWeight(double wt) {
//check pre-condition
if (wt > 0)
this.weight = wt;
}

// other methods
}

这样的话,在weight这个地方,你自己就保护了自己,不会出错了。

这只是个简单的例子,在使用过程中,应该会有更深的理解。
------解决方案--------------------
有些地方看不懂楼主的意思,比如“使(是)用户吗?用户可以看到代码吗?显然不能。”
------解决方案--------------------
使用set和get方法有两个好处:
1。以规范的格式,方便外部程序的调用(如web容器)
2。通过对set和get方法的prtvate/protect/public设置,可以限制只能取或只能存的变量,比如一个变量a,要只能读取,那就把get设为public,其他都private

------解决方案--------------------
这绝不是白痴问题
想学好一门语言
绝对要细致
我觉得你写代码的时间还是少
你可以来回改动它们
反复实验 你就会知道 public和static的好处了