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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李井山 中级黑马   /  2012-3-27 15:44  /  2223 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

反射中getDeclaredField(变量名)方法和setAccessible(ture)方法可以强行取出对象中的私有变量,那我们把属性设为private还有什么用呢?

6 个回复

倒序浏览
private封装好处
第一:重用;
第二:不必关心具体的实现;
第三:面向对象三大特征之一;
第四,具有安全性!

你可以只关注于使用,而不关心具体的实现。
比如人类,有手有脚,有眼睛(人类的属性),会跑会吃(人类的行为)我们通过封装把属性和行为(方法)组装起来,形成一个类(人类),我们可让某个人(人类的一个对象)吃饭,跑步,(调用方法),但我们不能让某个人长三只眼睛(就是说我们不应该去直接操作属性),而跑步要用到腿(属性),腿的长短可能决定了跑的快慢(属性影响了方法).封装也确实实现了重用,我们只要为人类创建一个跑方法,以后我们要让张三跑那么就创建一个对象并给他个名子叫张三,然后让他跑.
回复 使用道具 举报
估计访问修饰符和泛型类似只能提高编译时的安全性,而反射已经跳过了编译层,所以可以通过反射方式访问类的私有成员。
回复 使用道具 举报
估计访问修饰符和泛型类似只能提高编译时的安全性,而反射已经跳过了编译层,所以可以通过反射方式访问类的私有成员。
回复 使用道具 举报
反射和封装性面向的不是一类问题。
封装呢,指的是在编写同一个项目的程序员之间,隐藏了方法的细节,只要用我提供给接口就好, 不用知道内部具体怎么实现的。 在大家在一个程序中,各负责一个部分时,互相合作时的一个安全的机制。可以降低耦合。
  而反射,是在一些框架中,也就是在框架内部使用了反射技术来操作你的代码。
首先呢,框架是通用,所有人用的是一个版本。程序和框架之间的关系,不是一个程序中的各个模块之间的关系。框架中反射所做的事,从本质上讲,并不是和你的代码合作去处理某个业务,而只是他在用反射的方式操作你写出来的代码帮你完成一些繁杂的事情。
反射实现的动作,也是操作你实现的,这个动作即使不用反射也是你本来就想要做的,反射只是不需要你在手动去做了,不管应用反射与否都一样。
举个实际例子就是,你在编程时候要查询数据库里的数据,肯定要写JDBC程序,建连接池,写SQL等等,而用hibernate之后呢,只做个配置文件,之后hibernate就帮你把数据库连接池的功能做好了,而且你也可以直接在程序中使用变量,而不用操作数据库中的字段了。就是不用反射,这个动作你也是要做的,这里和封装性没什么关系
回复 使用道具 举报
赚技术分的问题
回复 使用道具 举报
没赚到!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马