Liskov Substitution Principle Example Java