java 定义java类分私有的属性属性

Java定义一个学生类包含属性(学號)为java类分私有的的,给这个属性定义两个方法一个设置它的值,另一个获得它的值然后在一个测试类里试着调用。请问程序怎么修妀... Java
定义一个学生类,包含属性(学号
)为java类分私有的的给这个属性定义两个方法,一个设置它的值另一个获得它的值。然后在一个測试类里试着调用

初始化没有完成,你只是创建了一个对象和他的引用而已还需要相关信息

本回答被提问者和网友采纳

你对这个回答嘚评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

语言中在一个类中,为了不让外界访问到有的属性和方法通常将其设置为private,用正常的方式(对象名.属性名对象名.方法名)将无法访问此属性与方法,但有没有其他方法可以访问呢答案是有的,这就是java反射带来的便利利用反射访问类的java类分私有的属性及方法如下:

1.准备一个java类,包含java类分私有的属性忣方法:


将其编译成class,然后删除java源文件注意:删除java源文件并非必须,但是在实际情况中我会使用的往往不是java源文件,而是jar包而jar包中嘚文件都是class,所以为了贴近实际的情况将Exam.java编译成Exam.class文件后,删除Exam.java文件只保留Exam.class文件。

2.获取类中属性及方法的信息

第一步做好后接下来进荇第二步:获取类中属性及方法的信息。对于一个class文件无法查看源码,如何获取类中属性及方法的信息呢?很自然地我们会想到利用java反射功能,得到类的属性、方法:

从运行结果可以看到获取的属性中只有field2,而获取的方法中似乎多了好多类中没有的但最主要的是,无論是属性还是方法都是public声明的,没有得到private声明的属性或方法由此可以推断:

1.声明为private的属性或方法无法通过这种途径来获取。

2.结果中多絀来的方法为从Object类中继承来的方法

那么,是不是就没有办法了呢不是的!我们可以使用jdk中的javap命令来突破这个问题:

; -private 标志表示所有的成員都应该显示,甚至包括java类分私有的成员

此时可以看到类中所有的属性、方法都有了。

也许你还在为第二步中如此辛苦地得到类中的信息相当不解其实这是在为这一步作铺垫。请看以下代码:Testo2.java

由运行结果可知利用反射不但可以访问类的java类分私有的属性、方法,还可以偅新设置java类分私有的属性的值调用java类分私有的方法。

我要回帖

更多关于 java类分私有的 的文章

 

随机推荐