In your case, you are passing the different objects using polymorphism which are created based on extension of abstract. And while invoking to those methods you are referring to abstract instead of original and that abstract may or may not have the calling method.