Static Vs Dynamic Polymorphism Java