类中的私有成员只能在类的内部访问,在类的外部是不能访问的,一般访问私有成员的方法是在类中定义一个共有的方法来访问这个私有变量,然后在类的外部调用这个方法,以达到访问私有成员变量的目的
刚才想了很久,因为你问的太广阔了,内部类访问外部类属性分好多种情况
我感觉直接写了一个例子,截图比较直观一些,出错的地方,
都在关键位置打了标记,也有注释,把有可能出现的错误,我都写出来,也可能没写完
比如局部变量,常量,也是要注意的事情
篇幅有限,我把字体缩小到很多,才把图截全,有注释,把单独窗口打开可以放大,比较醒目一些:
有错的地方,欢迎指正,共同学习
为什么用反射获取不到类的private方法
private,public类似与 WEB系统中管理员,普通用户权限 是一种权限安全机制
反射的主要目的并不在与看到私有方法,更重要的是能在运行时可以动态自查自己的结构,在开发某些功能时特别有用,
例如:(1)把XML节点自动映射后JAVA BEAN中
(2)批量 *** 作带有接口的类的时
(3)代理功能实现等
楼主需要潜心修行才能大彻大悟啊
私有的目的是为了使用这个类的用户 不能随意更改数据
不是所有的都需要私有 关键看关联性
一般需要私有的情况
比如 以2个点实现一条直线
那么
class line
{
src_pos;
dst_pos;
};
假设由于效率优化需要增加一个斜率 k 使得k在直线初始化 或者改变src_pos和dst_pos的时候
就被计算出来
由于k 是由 src_pos 和 dst_pos来决定的
所以这个时候这个k 就不能让使用者随意更改,
所以这个k就应该定义成私有。然后定义一个公有函数来获取这个k,
但不能定义一个共有函数来设置这个k
同理 如果不增加这个k 那么src_pos 和dst_pos 可以让使用者 随意更改
但是增加了这个k之后 src_pos和dst_pos的修改会关联到K的修改
所以这个时候应该把src_pos和dst_pos也设置成私有,
增加获取函数和设置函数 在设置函数里增加K 的计算
当然在上面这个情况硬要把src_pos 和dst_pos设置成共有也可以
那么只要在获取K的函数里重新计算一次,但是这样就没有声明K的必要了
所以关于面向对象里性息隐蔽规则,实际上是一个算法数据关联性管理的问题
至于调用这个获取和设置函数所需要的函数堆栈开销 可以使用inline来处理
以上就是关于如何访问类中类的私有数据成员全部的内容,包括:如何访问类中类的私有数据成员、Java内部类是如何获取外部类的private属性、为什么用反射获取不到类的private方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)