Java2all.com  




Share This Topic -

Dynamic Method Dispatch:

Dynamic method dispatch is the mechanism by which a call to an overridden method is resolved at run time, rather than compile time.

Dynamic method dispatch is important because this is how Java implements run-time polymorphism.

method to execution based upon the type of the object being referred to at the time the call occurs. Thus, this determination is made at run time.
 
In other words, it is the type of the object being referred to (not the type of the reference variable) that determines which version of an overridden method will be executed.

EX :

 class A 
{
	void callme() 
	{
		System.out.println("Inside A's callme method");
	}
}

class B extends A 
{
		// override callme()
	void callme() 
	{
		System.out.println("Inside B's callme method");
	}
}

class C extends A 
{
		// override callme()
	void callme() 
	{
		System.out.println("Inside C's callme method");
	}
}

public class Dynamic_disp 
{
	public static void main(String args[]) 
	{
		A a = new A(); // object of type A
		B b = new B(); // object of type B
		C c = new C(); // object of type C
		A r; // obtain a reference of type A
		r = a; // r refers to an A object
		r.callme(); // calls A's version of callme
		r = b; // r refers to a B object
		r.callme(); // calls B's version of callme
		
		r = c; // r refers to a C object
		r.callme(); // calls C's version of callme
	}
}

 
Output :
 
Inside A's callme method
Inside B's callme method
Inside C's callme method
 
Here reference of type A, called r, is declared.
 
The program then assigns a reference to each type of object to r and uses that reference to invoke callme( ).
 
As the output shows, the version of callme( ) executed is determined by the type of object being referred to at the time of the call.