gpt4 book ai didi

java - 为什么要按这个顺序输出?

转载 作者:行者123 更新时间:2023-12-04 17:17:44 24 4
gpt4 key购买 nike

abstract class A {

public void methodA() {
System.out.println("methodA");
methodB();
showName();
}

public abstract void methodB();

public void showName() {
System.out.println("in showname base");
}
}

class B extends A {

public void methodB() {
System.out.println("methodB");
}

public void showName() {
System.out.println("in showname child");
}
}

public class SampleClass {

public static void main(String[] args) {
A a = new B();
a.methodA();
}
}

输出是:

methodA
methodB
in showname child

问题:-

因为在重写中,对象类型被考虑在内。这是 B 类的 showName() 方法不属于 A 类的原因吗?如果不是那么这个输出顺序的原因是什么?

最佳答案

您创建了一个类型 B 的对象,因此对该对象调用的所有方法都将在类 B 上。如果类 B 没有实现某些方法(如 methodA),则 Java 会尝试在父类(A ).您应该阅读面向对象语言中的多态性:

http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming

关于java - 为什么要按这个顺序输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11834015/

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