package com.imooc.reflect;
public class ClassDemo1 {
public static void main(String[] args) {
ABC a=new ABC();/*ABC这个类本身就是一个实
例对象,就是class类的实例对象
,任何一个类都是class类的实例对象
,有三种表示方式来表示这个实例对象*/
Class x =ABC.class;
//知道类名:第一种方法实例化类的对象,任何一个类都有一个隐含的静态成员变量class
Class y =a.getClass();
//知道对象名:通过getClass
//这些x,y叫做类ABC的类类型,
//说道类类型就知道是类本身的class类实例
System.out.println(x==y);
Class z = null;
try {
z =Class.forName("com.imooc.reflect.ABC");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
//第三种方法
System.out.println(y==z);
//通过类的类类型来创建实例化对象
try {
ABC abc =(ABC)x.newInstance();
abc.print();
//需要无参数的构造方法,他会去调用这个方法
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
class ABC{
void print(){
System.out.println("hello world !");
}
}
在面向对象中,万物皆是对象,一个类本身也是对象。
但是静态成员,普通数据类型类不是面向对象的。
每个类都是java.lang.Class的对象