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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗安迪 中级黑马   /  2014-3-1 19:16  /  1294 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 罗安迪 于 2014-3-3 09:25 编辑


一直想不通 通过Java的反射可以获取private的属性 内容 并且可以更改,那么原来说的通过把状态加上private来避免被外界访问而提高程序的健壮性,这两个特性是不是矛盾了呢?

能理解这两特性的好处,但是这是不是一个得益得害的结果?


评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

4 个回复

倒序浏览
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有的功能。当别人使用这个类时,如果通过反射直接调用私有方法,可能根本实现不了类的功能,甚至可能会出错,因此通过反射调用私有方法可以说是没有任何用处的,开发人员没有必要故意去破坏封装好的类。从这点上看,封装性并没有被破坏。
所谓安全,如果意思是保护实现源码不被别人看见,那没有作用。不用反射也能轻易获取源码。
所以我以为反射机制只是提供了一种强大的功能,使得开发者能在封装之外,按照特定的需要实现一些功能。就好比核技术,虽然造核弹很危险吧,但造核电站还是很有用处的(这个比喻似乎不是很恰当,将就将就)。

评分

参与人数 1技术分 +1 收起 理由
朱神必 + 1

查看全部评分

回复 使用道具 举报
任何事物都有对立的一面吧!如果某个事物一但无法改变,那么这不就死了么。所以万事都是相通的。只是须要一定的级别。
回复 使用道具 举报
我记得在那个老师的视频上讲了这个问题,没有绝对!
回复 使用道具 举报
年少丶 发表于 2014-3-1 20:12
封装,是将具体的实现细节隐藏,而把功能作为整体提供给类的外部使用,也就是说,公有方法能够完成类所具有 ...

。。。好吧 谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马