0
0
Javaprogramming~10 mins

Runtime polymorphism in Java - Step-by-Step Execution

Choose your learning style9 modes available
Concept Flow - Runtime polymorphism
Create base class reference
Assign derived class object
Call overridden method
At runtime, JVM decides which method to call
Derived class method executes if overridden
Program continues
At runtime, the program decides which version of an overridden method to call based on the actual object type, not the reference type.
Execution Sample
Java
class Animal {
  void sound() { System.out.println("Animal sound"); }
}
class Dog extends Animal {
  void sound() { System.out.println("Dog barks"); }
}
public class Main {
  public static void main(String[] args) {
    Animal a = new Dog();
    a.sound();
  }
}
This code shows a base class reference holding a derived class object and calling an overridden method, demonstrating runtime polymorphism.
Execution Table
StepActionReference TypeObject TypeMethod CalledOutput
1Create Animal referenceAnimalnullnonenone
2Assign new Dog() to Animal referenceAnimalDognonenone
3Call sound() on Animal referenceAnimalDogDog.sound()Dog barks
4Program continuesAnimalDognonenone
💡 Method call resolved at runtime to Dog's sound() because object type is Dog.
Variable Tracker
VariableStartAfter Step 2After Step 3Final
a (Animal reference)nullDog objectDog objectDog object
Key Moments - 3 Insights
Why does calling sound() on an Animal reference print 'Dog barks' instead of 'Animal sound'?
Because the actual object is a Dog, JVM calls the overridden Dog.sound() method at runtime (see execution_table step 3).
Does the reference type decide which method runs?
No, the reference type only limits accessible methods. The actual method called depends on the object type at runtime (execution_table step 3).
What if Dog did not override sound()?
Then Animal's sound() would run because no overriding method exists in Dog (not shown in table but implied).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table, what is the object type of variable 'a' after step 2?
AAnimal
Bnull
CDog
DCat
💡 Hint
Check the 'Object Type' column at step 2 in execution_table.
At which step does the method Dog.sound() get called?
AStep 3
BStep 1
CStep 2
DStep 4
💡 Hint
Look at the 'Method Called' and 'Output' columns in execution_table.
If the object assigned to 'a' was new Animal() instead of new Dog(), what would be the output at step 3?
ADog barks
BAnimal sound
CNo output
DCompilation error
💡 Hint
Consider how runtime polymorphism depends on the actual object type shown in variable_tracker.
Concept Snapshot
Runtime polymorphism means the method that runs is decided at runtime based on the object's actual class.
Use a base class reference to hold derived class objects.
Call overridden methods via base reference.
JVM calls the derived class method if overridden.
Reference type limits accessible methods but not which method runs.
Enables flexible and dynamic behavior in programs.
Full Transcript
Runtime polymorphism in Java happens when a base class reference points to a derived class object. When calling an overridden method through this reference, Java decides at runtime which method to execute based on the actual object's class. In the example, an Animal reference holds a Dog object. Calling sound() on this reference runs Dog's version, printing 'Dog barks'. The reference type Animal limits accessible methods but does not decide which method runs. This dynamic method dispatch allows flexible code that can work with different object types through a common interface.