java 返回对象的引用,该对象是私有成员,岂不是破坏封装???

classTestCT{privateTestClassm_Test;publicTestCT(){m_Test=newTestClass();}publicTestCl... class TestCT
{
private TestClass m_Test;
public TestCT() { m_Test = new TestClass(); }
public TestClass GetObj() { return m_Test; }
}

这样岂不是通过GetObj在外面就可以对私有的m_Test进行操作岂不是破坏封装了!!???
那是java语言本身设计的问题吗?
展开
 我来答
如梦★初醒℃
2013-08-01 · TA获得超过346个赞
知道小有建树答主
回答量:293
采纳率:66%
帮助的人:182万
展开全部
理解错误,私有成员的意思是指不能通过对象直接引用他们(注意是“直接”)。举个例子,有一个圆类Circle,其中有两个私有变量原点(Point p)和半径(int r),并各自有其公有的set和get方法,那么在类外就可以调用set或get方法来访问私有变量,这不叫破坏封装了,例如有Circle c = new Circle(),如果这时能够直接写c.p或c.r那才叫破坏封装了,但显然这么写是不行的。那么为什么要这样设计类呢?原因在于作者不想别人直接更改某些变量,而提供公有的set方法,就比如上述圆类,setR方法中你就可以加入对半径参数的判断,若为负就给出相应错误提示,但若r是共有的,别人直接写个c.r=-1,你就不好处理了。
前熙熙0Hj
2013-08-01 · TA获得超过448个赞
知道小有建树答主
回答量:203
采纳率:100%
帮助的人:109万
展开全部
没有,这不是直接对私有成员进行引用,而是通过公用接口进行访问的,程序如果留有这样的共有接口的话就表示允许对这样的成员变量进行修改,否则程序不会留这样的接口给客户端程序员的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6ddfe974a
2013-08-01 · 超过12用户采纳过TA的回答
知道答主
回答量:70
采纳率:0%
帮助的人:42.4万
展开全部
这样写正是体现了JAVA的封装性,不能通过对象直接调用m_Test,而必须通过公共的接口GetObj(),来得到m_Test。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ansiansi
2013-08-01 · TA获得超过294个赞
知道小有建树答主
回答量:650
采纳率:0%
帮助的人:383万
展开全部
get set本来就是用来控制私有属性,private 修饰是不让你直接修改属性
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式