Java Polymorphism Inheritance And Encapsulation