public class Base {
public void print() {
System.out.println(“In Base”);
}
public static void main(String[] args) {
test(new Base());
test(new Son());
test(new Son1());
}
static void test(Base base) {
base.print();
}
}
class Son extends Base{
public void print() {
System.out.println(“In Son”);
}
}
class Son1 extends Base{
public void print() {
System.out.println(“In Son1”);
}
test()方法接收Base类型的参数,main()方法中向test()传入了Base、Son、Son1三个类的对象.虽然在test()方法中Son、Son1的对象都是由Base类型的变量引用,但在具体调用过程中,系统根据实际对象调用了相应的方法