java对象初始化的三种方法,java创建对象初始化对象
步骤1:加载类。一个java对象在初始化之前会被类加载,一个类对象会在JVM中生成。加载一个类会做以下事情,下面给出递归描述。
如果该类有父类,则先加载其父类。
i 初始化该类静态成员
ii 执行该类静态代码块
步骤2:创建一个对象。如果这个类有父类,那么在创建对象时,会先创建其父类的对象,在外层包装子类的属性和方法,然后返回子类的引用。递归描述如下。
如果该类有父类,先创建父类的对象。
i 初始化该类普通成员
ii 执行普通代码块
iii 调用该类构造方法
示例:
这个类对象充当一个成员变量。
公共类信息{公共信息(字符串){
system . out . println(s);
}
}父类
公共类父级{
public static Info info=new Info(“父静态成员”);//静态成员
public Info info2=new Info(“父公共成员”);//普通成员
静态{//静态代码块
System.out.println(父静态块);
}
{//公共代码块
System.out.println(父公共块);
}
Public Parent() {//父类构造方法
System.out.println(Parent。parent());
}
}子类
公共类子扩展父{
public static Info info=new Info(“子静态成员”);//静态成员
public Info info2=new Info(子公共成员);//普通成员
静态{//静态代码块
System.out.println(子静态块);
}
{//公共代码块
System.out.println(“子公共块”);
}
Public Child() {//子类构造方法
System.out.println(Child。child());
}
}下面测试类的加载过程。我们不是创建一个对象,而是直接加载类,而且是一个加载的子类。
公共类InitObjectTest{
公共静态void main(String[] args) {
尝试{
//class . forname(“Parent”);
class . forname(“Child”);
}catch(异常e){
}
//system . out . println(================现在,我们在下面创建一个对象=========);
//new Parent();
}
}测试结果:
如何解决写爬虫IP受阻的问题?立即使用。
测试结果符合上面写的加载类规则。首先初始化父类的静态成员,然后执行父类的静态块,再初始化子类的静态成员,最后执行子类的静态块。我们可以看到,静态成员确实是在类被加载时被初始化的。
注意:类只加载一次,之后创建的对象不会再加载,这也是静态代码块只执行一次的原因。
推荐教程:java入门教程以上是如何用java初始化对象的细节。请多关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。