继承类之间的调用过程,面试题求解

本文详细解析了Java中当一个子类继承父类,并且子类和父类都定义了普通方法及静态方法时,构造方法与静态方法的调用顺序。通过具体的代码实例,解释了子类构造方法如何调用父类构造方法,以及变量初始化、普通方法和静态方法之间的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

class E{
int x = dd();
int y = cc();

public int dd(){
System.out.println("父类普通方法");
return 1;
}

public static int cc(){
System.out.println("父类static方法");
return 2;
}
}

public class D extends E{

int x = dd();
int y = cc();

public D(){
System.out.println("要");
}

public int dd(){
System.out.println("子类普通方法");
return 1;
}

public static int cc(){
System.out.println("子类static方法");
return 2;
}

public static void main(String[] args){
new D();
}
}

结果:
子类普通方法
父类static方法
EEEEEEE
子类普通方法
子类static方法

求解,为什么是这样的顺序,结果是我编译运行的结果


 执行顺序:
1、首先是main方法里的new D();
这里要调用父类构造方法,先初始化变量,所以执行:int x = dd();(父类),因为子类覆盖了父类的这个方法,所以执行子类的dd();方法,输出:子类普通方法
2、父类继续执行int y = cc();这个方法是static的,所以,不能被覆盖,输出:父类static方法
3、父类构造方法执行结束,执行子类构造方法,先进行变量初始华,执行子类的int x = dd();(子类),调用方法,输出子类普通方法
4、再执行int y = cc();(子类),输出子类static方法
5、最后,执行System.out.println("要");

这就是整个过程,其实syoumei(只答有趣的题,只解答不甚懂的题)说的很清楚了
执行构造方法会调用父类构造方法。
执行构造方法前先初始成员
方法的覆盖
static方法不会被覆盖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值