本帖最后由 摄影勾魂 于 2013-9-30 12:35 编辑
在new Test().say(father)中,实参father是Father类型的对象,所以它调用的是:- public void say(Father father) {
- System.out.println("say1");
- father.say();
- }
复制代码 这个方法,那么打印出“say1”也就不难理解了;而这句Father father = new Son()应用了多态,编译类型是Father,运行类型是Son,那么在执行到System.out.println("say1")的下一句: father.say()时,它实际上调用的是 class Son中的say()方法(该方法重写了 class Father中的say()方法),也就打印出了“I am son”。 |