Static Binding vs Dynamic Binding in JAVA

package staticbinder;

class Animal {
	static void talk() { System.out.println("Animal doesen't talk!!"); }

	void eat() { System.out.println("Animal eating..."); }
}

class Dog extends Animal {

	static void talk() { System.out.println("Dog barking..."); }

	@Override
	void eat() { System.out.println("Dog eating..."); }
}

public class Main {
	public static void main(String[] args) {
		Animal a = new Dog();

		/* static binding happens in private, final, static and
		 * overloaded methods at compile time
		 */
		a.talk(); // will print: Animal doesen't talk!!

		/* dynamic binding happens in overriding methods at
		 * run time
		 */
		a.eat(); // will print: Dog eating...
	}
}

Leave a Reply

Your email address will not be published. Required fields are marked *