此代码产生的输出没有意义,可能是由于我缺乏理解。如果我错了,请纠正我
import java.util.*;
class DemoA
{
public DemoA(){
System.out.println("DemoA object created");
}
public String methodA() {
return "methodA in DemoA";
}
}
class DemoB extends DemoA
{
public DemoB(){
super();
System.out.println("DemoB object created");
}
public String methodA() {
return "methodA in subclass (DemoB)";
}
}
public class ExamQ1b
{
public static void main(String[] args) {
ArrayList<DemoA> aList = new ArrayList<DemoA>();
aList.add(new DemoA());
aList.add(new DemoB());
for (DemoA obj: aList)
System.out.println(obj.methodA());
}
}
输出是
DemoA object created
DemoA object created
DemoB object created
methodA in DemoA
methodA in subclass (DemoB)
起初我不明白输出是如何产生的,但后来我使用了调试功能,发现它为什么会这样,并发现了一些相当令人困惑的东西(并不令人惊讶)。
为什么这些代码行会产生输出?
aList.add(new DemoA());
aList.add(new DemoB());
以上几行的输出是这些,但在我看来,这些应该只是添加到列表中而不产生任何输出,我在这里缺少什么?
DemoA object created
DemoA object created
DemoB object created