字母打印的顺序是“ABDC”为什么打印最后一个字母C?我在代码中的注释中提供了我的思考步骤和指南。
public class Base {
public static void main(String[] args) {
Base b = new Derived();
b.methodOne();
}
public void methodOne() { //Step 1
System.out.print("A"); //Print "A" first
methodTwo(); //Sends me to Derived class's methodTwo()
}
public void methodTwo() { //Step 3
System.out.print("B"); //Print "B" second
}
}
public class Derived extends Base{
public void methodOne() {
super.methodOne();
System.out.print("C");
}
public void methodTwo(){ //Step 2
super.methodTwo(); //Sends me to Base class's methodTwo()
System.out.println("D"); //Step 3 Print "D"
}
}
答案 0 :(得分:0)
methodOne
的{p> Derived
会从methodOne
覆盖Base
。这意味着,如果您有一个 class Derived
的对象 - 即创建为new Derived()
的对象;然后,当您在该对象上调用methodOne()
时,您将从methodOne
调用Derived
版本。你称之为到的变量 type 并没有什么区别。
因此,在您的示例中,当您在b.methodOne()
方法中编写main
时,变量b
的类型并不重要是Base
,重要的是变量是指 class 为Derived
的对象。 methodOne
中Derived
的版本打印"C"
后,其他所有内容都已完成。
答案 1 :(得分:0)
通话顺序:
main
构建Derived
现在你必须遵守调用其他方法的顺序和System.out.println
(在Base
首先打印,然后调用,Derived
反过来。