this wont work public static void doWork(Person person) { // Item 3 if(person instanceof Person.User){ Person.User user = new Person.User(); user.live(); } else if(person instanceof Person.Loser){ Person.Loser user = new Person.Loser(); user.doNothing(); } else if(person instanceof Person.Coder){ Person.Coder user = new Person.Coder(); user.writeCode(); } else if(person instanceof Person.Programmer){ Person.Programmer user = new Person.Programmer(); user.enjoy(); } } _______________________________________________________________________ but this works public static void doWork(Person person) { if(person instanceof Person.User) { ((Person.User)person).live(); } else if(person instanceof Person.Loser) { ((Person.Loser)person).doNothing(); } else if(person instanceof Person.Coder) { ((Person.Coder)person).writeCode(); } else if(person instanceof Person.Programmer) { ((Person.Programmer)person).enjoy(); } }