Should we always use inheritance?
Inheritance and polymorphism are both very useful and really show off the power of object-oriented programming. However, in some circumstances, inheritance can cause more problems than it solves, and therefore, we should bear in mind a few rules of thumb when deciding whether or not to use it.
Could the same thing be achieved with a simpler solution?
Let's say we want to make a more powerful Enemy
object; it will have the same behavior a regular Enemy
object will have but with more health. One possible solution would be to derive a new class PowerEnemy
from Enemy
and give it double health. In this solution the new class will seem extremely sparse; it will use the functionality from Enemy
but with one different value. An easier solution would be to have a way to set the health of an Enemy
class, whether through an accessor or in the constructor. Inheritance isn't needed at all.
Derived classes should model the "is a" relationship
When deriving a class, it is...