Answer

The reason why they both get the getAnnualCost method is because you'd want to unify their interfaces.

To achieve that, you'll need to rename the Department's method, but leave the Employe's method intact. If both of these methods had similar implementation, you could pull them to the base class and get rid of the method in subclasses altogether (like with getName).

But here we just assume that that wasn't possible and there are still some need for the overriding. Again, it can play out in different ways in real life.

Replies 1

The reason why they both get the getAnnualCost method is because you'd want to unify their interfaces.

To achieve that, you'll need to rename the Department's method, but leave the Employe's method intact. If both of these methods had similar implementation, you could pull them to the base class and get rid of the method in subclasses altogether (like with getName).

But here we just assume that that wasn't possible and there are still some need for the overriding. Again, it can play out in different ways in real life.