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语言本身设计的问题吗? 展开
{
private TestClass m_Test;
public TestCT() { m_Test = new TestClass(); }
public TestClass GetObj() { return m_Test; }
}
这样岂不是通过GetObj在外面就可以对私有的m_Test进行操作岂不是破坏封装了!!???
那是java语言本身设计的问题吗? 展开
展开全部
理解错误,私有成员的意思是指不能通过对象直接引用他们(注意是“直接”)。举个例子,有一个圆类Circle,其中有两个私有变量原点(Point p)和半径(int r),并各自有其公有的set和get方法,那么在类外就可以调用set或get方法来访问私有变量,这不叫破坏封装了,例如有Circle c = new Circle(),如果这时能够直接写c.p或c.r那才叫破坏封装了,但显然这么写是不行的。那么为什么要这样设计类呢?原因在于作者不想别人直接更改某些变量,而提供公有的set方法,就比如上述圆类,setR方法中你就可以加入对半径参数的判断,若为负就给出相应错误提示,但若r是共有的,别人直接写个c.r=-1,你就不好处理了。
展开全部
没有,这不是直接对私有成员进行引用,而是通过公用接口进行访问的,程序如果留有这样的共有接口的话就表示允许对这样的成员变量进行修改,否则程序不会留这样的接口给客户端程序员的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这样写正是体现了JAVA的封装性,不能通过对象直接调用m_Test,而必须通过公共的接口GetObj(),来得到m_Test。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
get set本来就是用来控制私有属性,private 修饰是不让你直接修改属性
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询