java 构造函数初始化_java 构造函数初始化全过程以及顺序

本文详细阐述了Java中类的初始化过程,包括静态初始化和构造函数的执行顺序。首先执行静态块和静态变量初始化,接着是构造块和成员变量,最后是构造函数体。同时,文章提到了Java不支持多重继承的特性以及继承时的注意事项。
摘要由CSDN通过智能技术生成

public class Test1 {

public static int k=0;

public static Test1 t1=new Test1("t1");

public static Test1 t2=new Test1("t2");

public static int i=print("i");

public static int n=99;

public int j=print("j");

{

print("构造块");

}

static {

print("静态快");

}

public Test1(String str){

System.out.println((++k)+":"+str+"     i="+i+"   n="+n);

++n;++i;

}

public static int print(String str){

System.out.println((++k)+":"+str+"   i="+i+"     n="+n);

++n;

return ++i;

}

public static void main(String[] args) {

Test1 t=new Test1("init");

}

}

1:j   i=0     n=0

2:构造块   i=1     n=1

3:t1     i=2   n=2

4:j   i=3     n=3

5:构造块   i=4     n=4

6:t2     i=5   n=5

7:i   i=6     n=6

8:静态快   i=7     n=99

9:j   i=8     n=100

10:构造块   i=9     n=101

11:init     i=10   n=102

从运行结果可以看出,先进行类的静态初始化,包括静态块和静态变量,谁在前谁就先初始化,然后则是构造函数本身,这同时也包含两个部分:构造快和成员变量,顺序由出现的顺序决定,谁先出现谁先执行,然后才是构造函数体本身。

类的继承知识点

(1)java不支持多重继承,也就是说子类至多只能有一个父类

(2)子类继承了其父类中不是私有的成员变量和成员方法,作为自己的成员变量和方法

(3)子类中定义的成员变量和父类中定义的成员变量相同时,则父类中的成员变量不能被继承

(4)子类中定义的成员方法,并且这个成员方法的名字,返回类型,及参数个数和类型与父类的某个成员方法完全相同,则父类的成员方法不能被继承。

public abstract class A {

int i=1;

public void printI() {

System.out.println("i="+i);

}

}

public class B  extneds A{

int i=2;

public static void main(String[] args) {

B b=new B();

b.printI();

}

}

正确结果1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值