A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 颜庭飞 黑马帝   /  2011-10-14 01:31  /  3255 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

        今天看到问答里有人发了一个关于反射的问题,是如何利用反射来获取类的私有构造函数并进行类的实例化的,由此想到Java提供private关键字就是用来控制类的成员变量和方法在外部无法可见,那么使用反射能够获取到类的私有构造函数,成员变量和方法,并对其进行操作,那么这样做是否破坏了程序的封装性呢?

评分

参与人数 1技术分 +1 黑马币 +1 收起 理由
admin + 1 + 1

查看全部评分

3 个回复

倒序浏览
宁超 黑马帝 2011-10-14 08:16:15
沙发
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
黄锋 黑马帝 2011-10-14 09:02:47
藤椅
面向对象只是一种思想罢了,属性访问器的作用,也是起到一种加工的作用,在获取或者设置属性值的时候可以添加一些判断货或者加工,例如值的范围判断,编码修改等等.
反射这东西主要用在框架的开发上面,和一些设计模式也会用到.如果反射连私有属性都破解不了,你现在看到的SSH都不存在了.框架就是大量使用了反射技术的.

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
反射。。。还没学到。不大懂。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马