Answer:
(c) the dynamic type of reference will determine which of the methods to call.
Explanation:
Polymorphism in Object Oriented Programming typically means the same method name can cause different actions depending on which object it is invoked on. Polymorphism allows for dynamic binding in that method invocation is not bound to the method definition until the program executes.
So in the case of Animal superclass and Mammal subclass, both having a method called eat() with identical signatures and return types, depending on which reference, the correct method eat() will be called dynamically upon execution.
For example, if we have the following;
================================
<em>Mammal mammal = new Animal();</em>
<em>mammal.eat()</em>
================================
The eat() method that will be called is the one in the Mammal subclass.
However, if we have;
================================
<em>Animal animal = new Animal();</em>
<em>animal.eat()</em>
================================
The eat() method of the Animal superclass will be called.