-
aluckdog
每当我们写一个类并生成.class文件时,在这个文件内便包含了一个描述这个类信息的一个对象,类型为Class类型。Class类包含在java.lang包中。Class类没有公有的构造函数,我们无法直接实例化一个Class的对象(也不应允许)。但我们可以通过三种方式得到这个已经被实例化了的对象。1:通过对象从Object基类中继承下来的方法getClass()方法获得对象的一个Class类实例;2:通过Class类的静态方法forName()方法得到一个Class类的实例,参数为要得到实例的类的名字。由于编译器无法确保这个类一定会存在,所以必须对这个语句进行截获,否则编译器会认为“运行时存在找不到类而抛出异常的可能性”,从而导致编译无法通过。3:通过.class语句得到,形如:class cls = XXX.class;语句,其中对于封装类也可以通过classcls = XXX.TYPE;语句得到,这样得到会自动输入原基本数据类型,若还按.class语句则输入该封装类。 每当我们要创建一个类的对象时,JVM便会去检查是否加载了这个类,如果没有,则加载这个类,并加载这个类的Class对象到内存中。一旦Class对象被加载到内存中,便可以定义这个类的对象了。视频中通过一个实例来证明这一点。引入了一个概念:静态语句块。Static{...;}这样的语句形式称为静态语句块,在C++中没有这种用法。静态语句块在类被载入时会自动执行,由于C++的类是全部导入的。Java中则不会载入没有使用的类。我们也可以显式的去定义一个class类的对象并调用forName(),这样也会加载这个类的Class对象到内存,要注意的是前面讲的第三种方法没有这个功能。
-
素胚勾勒不出你
为类创建对象时候用的!class People(){think(){System.out.pringln("How to do")}}当你想用people这个类时,需要创建一个对象如创建个对象pPeople p=new People()这样才通过对象p用这个people类。如用People里的think()方法则通过p.think();引用public class Study{public static void main(String args【】){People p=new People();p.think();}}
-
月关宝盒
实例化一个类的时候用new关键字,当方法定义是static的时候可以直接通过类名调用而不用实例化。另外,抽象类也不能实例化