反射
类的对象: 基于定义好的类 创建该类的一个实例对象, 使用new通过一个类创建出的对象
类对象:类加载的产物,封装一个类所有的信息(类名 父类 接口 方法 属性…) 基于Class这个类创建出的对象
一.获取类对象
1.使用该类所创建出的类的对象 通过getClass()来获取
Student stu = new Student();
Class c = stu.getClass();
2.通过 类名.class 来获取一个类的 类对象
Class c = Student.class;
3.通过 Class.forName(“类的全类名/全限定名”); 类的全类名/全限定名:包名+类名
Class c = Class.forName("classes.Student");
4.类加载时机
1.当第一次创建本类对象时
2.第一次访问静态成员时(静态属性+静态方法)
3.当子类进行类加载时(当子类对象第一次被创建或子类静态成员第一次被访问) 父类会先进行类加载(也就只执行一次)
4.当第一次使用Class.forName()方法来获取一个类的类对象时
二.类对象的使用
1.获取类对象中属性 方法 构造方法的信息
a)获取非私有的信息
类对象.get Field(名字)/Method(名字)/Constructor();
b)获取私有的信息
类对象.get Declared Field(名字)/Method(名字)/Constructor();
c)获取所得属性/方法/构造方法信息
获取所有公开的属性/方法/构造方法信息 包括了父类
类对象.get Fields/Methods