gpt4 book ai didi

java - 多级继承中的方法调用

转载 作者:行者123 更新时间:2023-11-30 10:43:54 24 4
gpt4 key购买 nike

我有三个类,分别命名为 A 、 B 和 Test 类,每个类都有三个方法,如下面的代码所示。现在我从 Test 类创建一个 B 类的对象并将它放在父类 A 中。现在 A 的方法没有被调用,但是 B 的方法被调用了,为什么?此外,当我将方法设置为静态时,将调用 A 类的方法。这背后的原因是什么?

class A {
void test1() {
System.out.println("hello");
}
}

class B extends A {
void test1() {
System.out.println("From B class");
}
}

class Test extends B{
public static void main(String args[]){
A obj=new B();
obj.test1();
}

public void test1(){
System.out.println("from Test class");
}
}

最佳答案

在您的类定义中,子类(即 B)中的方法 test1() 覆盖了父类(即 A)中定义的方法

下面的代码使用“A”类型的引用创建 B 的对象实例

A obj = new B();

所有非静态方法都将在实际实例(即 B 类)上调用

所有静态方法都将在引用时调用,因此它将引用类 A。不能覆盖静态方法。

关于java - 多级继承中的方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37608520/

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