Class类
1)在面向对象的世界里,万事万物皆对象。
类是对象,类是java.lang.Class类的实例对象。
There is a class named Class
2)Foo的实例对象如何表示
Foo foo1=new Foo();//foo1就表示出来了
Foo这个类也是一个实例对象,Class类的实例对象,如何表示呢?
任何一个类都是Class的实例对象,这个实例对象有三种表示方式
(1) 第一种表示方式--->实际在告诉我们任何一个类都有一个隐含的静态成员变量class
Class c1=Foo.class;
(2)第二种表达方式--->已经知道该类的对象通过getClassF方法
Class c2=foo1.getClass(); 官网c1,c2表示了Foo类的类类型(class type),万事万物皆对象,类也是对象,是Class类的实例对象 这个对象我们称为该类的类类型 不管c1 or c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象 (3)第三种表达方式 Class c3=null; c3=Class.forName("com.imooc.reflect.Foo"); 我们完全可以通过类的类类型创建类的对象实例--->通过c1 or c2 or c3创建Foo的实例对象 Foo foo=(Foo)c1.newInstance();//需要有无参数的构造方法
动态加载类
动态加载类
1、静态加载类,是编译时刻加载;动态加载类,是运行时刻加载
2、new创建对象:是静态加载类,在编译时刻就需要加载所有的【可能使用到的类】。有一个类有问题(如不存在),都不能通过编译,会报错。
3、Class.forName()通过动态加载类,可以用到一个类时,才进行加载。
【功能性的类尽量使用动态加载,并对新添的类实现功能性接口(标准),这样就不用重新编译】