gpt4 book ai didi

java - Java 中的继承

转载 作者:搜寻专家 更新时间:2023-10-31 20:16:11 24 4
gpt4 key购买 nike

最近我经历了继承的概念。

众所周知,在继承中,superclass 对象先于subclass 对象创建/初始化。所以如果我们创建一个subclass的对象,它会包含所有的父类(super class)信息。

但我有一点卡住了。

父类(super class)和子类方法是否存在于单独的调用堆栈中?如果是这样,是否有任何特定原因?如果不是这样,为什么它们不出现在同一个调用堆栈中?

例如

// Superclass
class A {
void play1( ) {
// ....
}
}

// Subclass
class B extends A {
void play2( ) {
//.....
}
}

那么上述两个方法,即play1( )play2( ) 是否出现在单独的调用栈中?

谢谢。

最佳答案

调用栈和继承之间没有必然的关系。事实上经常没有。如果子类中的父类(super class)方法被覆盖,那么调用的是子类的方法——根本不执行父类(super class)方法,除非在子方法中有代码明确地执行该操作。父类(super class)方法根本不会出现在调用堆栈中 - 除非它被子方法显式调用。

class A {
void play1() {
//...
}
void play2() {
//....
}
}
class B extends A {
void play1() {
//...
}
}
B b = new B();
b.play1(); // 'first' call
b.play2(); // 'second' call

A.play2() 仅在“第二次调用”期间出现在调用堆栈中。 B.play1() 仅在“第一次调用”期间出现在调用堆栈中。 A.play1() 永远不会出现在调用堆栈中,也永远不会执行。

关于java - Java 中的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2858725/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com