package main;
public class main {
static class A{
public void play() {
System.out.println("A");
}
}
static class B extends A{
public void play() {
System.out.println("B");
}
}
public static void tune(A i) {
i.play();
}
public static void main(String[] args) {
B b = new B();
tune(b);
}
}
b向上转型之后为基类A,那么应该调用的是A类中的play方法,但是程序输出的确是B,这是为什么?