Du kannst natürlich auch mehrstufige Vererbung benutzen. Du könntest ShootingTower und MineTower von Tower ableiten und das sind dann jeweils wieder Basisklassen für alle Türme die schießen können, bzw. alle Türme die Minen legen (Türme legen Minen? na egal
). Die think-Methode von Tower würde von ShootingTower und MineTower überschrieben, die dann entweder einen Gegner anvisieren und schießen, oder irgendwohin eine Mine legen.
Was beim schießen jetzt genau passiert, regelt wieder eine virtuelle Funktion, die alle von ShootingTower abgeleitete Klasse implementieren und so verschiedene Schussarten umsetzen.
So kannst du dann sehr schön ganz verschiedene Türme haben, alle Gemeinsamkeiten in einer Basisklasse haben und hast trotzdem keine Klasse, die unnötig viele Funktionen hat(wie sagt man doch so schön? Man soll immer eine minimale aber vollständige Schnittstelle anstreben).
Am besten planst du alles durch und Präsentierst hier deinen Entwurf, es gibt sicher Leute, die das gerne durchlesen und dir Verbesserungsvorschläge schreiben, inklusive Begründung, was genau dadurch für dich besser und einfacher wird.