我有 3 节课,其中一节是 the super class
,另外两节是sub classes
. 他们有print()
共同的方法。从我调用print()
方法时,main()
我已经将对象向上转换为super class
then 是不是它必须调用方法super class
而不是subclasses
. 我在这里有点困惑。这怎么可能?java中的这种行为有什么原因吗?
这是我的代码
class Tree {
public void print() {
System.out.println("I am Tree");
}
public static void main(String []args) {
Tree t[] = new Tree[3];
t[0] = new Tree();
t[1] = new BanyanTree();
t[2] = new PeepalTree();
for(int i = 0; i < 3; i++) {
((Tree)t[i]).print();
}
}
}
public class BanyanTree extends Tree{
public void print() {
System.out.println("I am BanyanTree");
}
}
public class PeepalTree extends Tree{
public void print() {
System.out.println("I am PeepalTree");
}
}
程序的输出是
I am Tree
I am BanyanTree
I am PeepalTree
根据我的输出应该是
I am Tree
I am Tree
I am Tree
我在这里错过了什么吗???