关于返回值为对象类型的问题!
今天在写二叉排序数的Java实现代码时,偶然碰到一个问题,觉得有些不可思议。
通过提取,问题属于“方法的返回值为对象类型”是出现的一个疑问,问题如下:
假设我在A类中,定义了一个私有的对象型成员变量ab(属于B类对象),并且定义了公共方法getB(),其返回值就是这个B对象类型的私有变量。此时,我在C类中,用A类对象调用了getB(),返回值赋给B类对象型变量cb,因为返回对象类型时返回的就是这个对象的引用副本,此时cb就应该指向了A中私有的B类对象类型的成员变量ab。
那么,我就可以通过cb调用B类中的某些方法来改变ab的状态,也就说,在A类之外(C类中),通过cb直接成功的修改了A类的私有成员变量的状态,这是不是打破了A类封装的私有变量的访问限制?打破了其安全性?
我总觉得这有点可怕啊,是不是我有没想到的地方呢?求教高手给予解释吧,谢谢!