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...
}
}