JAVA执行顺序问题

看到群里有人发的,就研究了下,哈哈,那哥们看到别介意,我自己记录下,上代码
package com.luoliang;


public class Demo1 {
public static void main(String[] args) {
new Dervid();
}

}

package com.luoliang;


public class Dervid extends Base {


public static String fileName = "Dervid fileName 静态变量";

static{
System.out.println(fileName);
System.out.println("Dervid 静态代码块");
}
public String fileName2 = "Dervid fileName2 变量";
{
System.out.println(fileName2);
System.out.println("Dervid 代码块");
}
public static void fileMed(){
System.out.println("Dervid 静态方法");
}

int i = 22;

public Dervid() {
super();
i = 222;
System.out.println("Dervid()构造器"+i);
}
@Override
public void display() {
System.out.print(i);
System.out.println("Dervid 普通方法");
}
}

package com.luoliang;


public class Base {


private int i = 2;
public static String fileName = "Base fileName 静态变量";

static{
System.out.println(fileName);
System.out.println("Base 静态代码块");
}
public String fileName2 = "Base fileName2 变量";
{
System.out.println(fileName2);
System.out.println("Base 代码块");
}
public static void fileMed(){
System.out.println("Base 静态方法");
}

public Base(){
System.out.println("Base()+构造器"+i);
this.display();

}
public void display(){
System.out.print(i);
System.out.println("Base 普通方法");
}
}


先上结果吧:

Base fileName 静态变量
Base 静态代码块
Dervid fileName 静态变量
Dervid 静态代码块
Base fileName2 变量
Base 代码块
Base()+构造器2
0Dervid 普通方法
Dervid fileName2 变量
Dervid 代码块
Dervid()构造器222

总结下:1。父类静态变量-父类静态代码块-子类静态变量-子类静态代码块-(这时才调父类构造方法的第一句)-父类变量-父类代码块

-子类变量-子类代码块-父类构造器-子类变量-子类代码块-子类构造器

2。子类不管是否显式调用super(),都会执行父类的默认构造方法,当然你显式指定调用父类其中一个构造方法,就不会调用父类的默认构造方法了

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值