黑马程序员技术交流社区

标题: 使用反射是否破坏了程序的封装性? [打印本页]

作者: 颜庭飞    时间: 2011-10-14 01:31
标题: 使用反射是否破坏了程序的封装性?
        今天看到问答里有人发了一个关于反射的问题,是如何利用反射来获取类的私有构造函数并进行类的实例化的,由此想到Java提供private关键字就是用来控制类的成员变量和方法在外部无法可见,那么使用反射能够获取到类的私有构造函数,成员变量和方法,并对其进行操作,那么这样做是否破坏了程序的封装性呢?
作者: 宁超    时间: 2011-10-14 08:16
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。

作者: 黄锋    时间: 2011-10-14 09:02
面向对象只是一种思想罢了,属性访问器的作用,也是起到一种加工的作用,在获取或者设置属性值的时候可以添加一些判断货或者加工,例如值的范围判断,编码修改等等.
反射这东西主要用在框架的开发上面,和一些设计模式也会用到.如果反射连私有属性都破解不了,你现在看到的SSH都不存在了.框架就是大量使用了反射技术的.
作者: 陈胜华    时间: 2015-4-10 00:20
反射。。。还没学到。不大懂。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2