java的类成员方法的定义?

Python015

java的类成员方法的定义?,第1张

LZ好,是啊,因为类成员有数据成员和方法(也就是C语言中的函数),按照JAVA中类以及相关类的继承定义,有private,public,protected,

,4种.

30004希望对你有帮助!

在一个类的内部,一般包括以下几类成员:成员变量、构造方法、普通方法和内部类等。使用反射机制可以在无法查看源代码的情况下查看类的成员。编写程序,使用反射机制查看ArrayList类中定义的成员变量、构造方法和普通方法。

思路分析:这个ArrayList类不是自己定义的,就是Java里面的java.util.ArrayList类。

代码如下:

import java.lang.reflect.Constructor

import java.lang.reflect.Field

import java.lang.reflect.Method

public class ClassViewer {

public static void main(String[] args) throws ClassNotFoundException {

Class<?>clazz = Class.forName("java.util.ArrayList")

System.out.println("类的标准名称:" + clazz.getCanonicalName())

Constructor<?>[] constructors = clazz.getConstructors()// 获得该类对象的所有构造方法

System.out.println("类的构造方法:")

if (constructors.length != 0) {

for (Constructor<?>constructor : constructors) {

System.out.println("\t" + constructor)// 输出构造方法

}

} else {

System.out.println("\t空")

}

Field[] fields = clazz.getDeclaredFields()// 获得该类对象的所有非继承域

System.out.println("类的非继承域变量:")

if (fields.length != 0) {

for (Field field : fields) {

System.out.println("\t" + field)// 输出非继承域

}

} else {

System.out.println("\t空")

}

Method[] methods = clazz.getDeclaredMethods()// 获得该类对象的所有非继承方法

System.out.println("类的非继承方法:")

if (methods.length != 0) {

for (Method method : methods) {

System.out.println(method)// 输出非继承方法

}

} else {

System.out.println("\t空")

}

}

}

这个涉及到jvm虚拟机的类加载机制 ,static成员变量和方法在类加载过程的最后一步就已经用<clinit>()方法初始化了,a.test()? 虚拟机完全不会认为,因为test()是类方法,所以任何对象调用它的时候等同于直接test(),这个方法不属于任何对象私有,你的a=null是有点刁难它,但虚拟机更叼,它才不会理会你哪个对象调用它 ,这与它无关,因为它已经初始化了,无需对象引用,直接调用就是了。

说得有点乱,望对楼主有帮助!

手速慢了 楼主已经采纳了!悲伤。。。。。