深入研究继承、重写(回顾以前的学习,突然发现有不太懂的地方,想知道其根本)

来源:互联网 发布:钓鱼软件下载 编辑:程序博客网 时间:2024/04/29 03:29
<pre name="code" class="java">//  Animal class has a method run()// Rabbit extends Animal, Tortoise extends Animal// Match class has match(...) methodpublic void match(Animal animal1, Animal animal2){    animal1.run();    animal2.run();}In Test class :Animal rabbit = new Rabbit();Animal tortoise = new Tortoise();Match match = new Match();match.match(rabbit,  tortoise)

</pre><pre name="code" class="java">问题来了
match()方法运行后,并没有调用Animal的run()方法,而是调用各自从父类继承来的方法---这是为什么呢?java是如何知道match()方法运行哪个子类的方法的呢?
如果想知道答案,请看书籍《深入理解java虚拟机》 -- 周志明著 --- 251页 --- 动态分配
0 0