Java 非静态初始化的例子
在继承关系中,静态初始化、非静态初始化和构造函数的执行顺序
publicclassExA{
static{
System.out.println("父类--静态代码块");
}
publicExA(){
System.out.println("父类--构造函数");
}
{
//非静态代码块
System.out.println("父类--非静态代码块");
}
publicstaticvoidmain(String[]args){
newExB();
}
}
classExBextendsExA{
static{
System.out.println("子类--静态代码块");
}
{
//非静态代码块
System.out.println("子类--非静态代码块");
}
publicExB(){
System.out.println("子类--构造函数");
}
}
执行结果:
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
从上边的例子我们可以得出非静态代码块的初始化顺序是在静态代码块的初始化之后。
下边我们再来看另一个例子:
classMug{
publicMug(intmarker){
System.out.println("Mug("+marker+")");
}
voidf(intmarker){
System.out.println("f("+marker+")");
}
}
publicclassMugs{
Mugmug1;
Mugmug2;
{
//非静态代码块
mug1=newMug(1);
mug2=newMug(2);
System.out.println("mug1&mug2initialized");
}
Mugs(){
System.out.println("Mugs()");
}
Mugs(inti){
System.out.println("Mugs(inti)");
}
publicstaticvoidmain(String[]args){
System.out.println("Insidemain()");
//首先执行Mugs类中非静态代码块,创建两个对象。然后执行无参构造函数
newMugs();
System.out.println("newMugs()completed");
//再执行Mugs类中非静态代码块,这也是和静态代码块只初始化一次的不同之后,其次调用有参构造函数
newMugs(1);
System.out.println("newMugs(1)completed");
}
}
以上就是Java非静态初始化的例子的详细内容,更多关于Java非静态初始化的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。