Hallo,
ich habe eine theoretische Frage zu Interfaces. Klassen die ein Interface implementieren müssen die vom Interface vorgegebenen Methoden ja konkretisieren. Bsp.
interface SchachSpielfigur { kämpfe(); }
Angenommen eine andere Methode erwartet nun als Parameter eine SchachSpielfigur dann müsste diese ja die Methode kämpfe() anbieten. Könnte der Compiler nicht einfach prüfen ob ein übergebenes Objekt die Methode kämpfe() anbietet auch ohne das man immer explizit implements SchachSpielfigur angeben müste?
Was ich meine:
Angenommen wir haben eine Klasse Bauer implements SchachSpielfigur. Hier konkretisiere ich die kämpfe Methode. Wäre es rein theoretisch aber nicht möglich das ich einfach in der Klasse Bauer ohne implements SchachSpielfigur eine kämpfe Methode erstelle. Wenn ich Bauer nun irgendwo als "SchachSpielfigur" nutzen wöllte müsste der Compiler doch nur prüfen ob Bauer eine kämpfe Methode anbietet. Das könnte er doch auch ohne das ich Bauer explizit mit implements Schachfigur "markiere".
Wo wäre ein Nachteil zu sehen wenn einfach jedes Objekt zulässig wäre was eine kämpfe Methode anbietet? Der Compiler könnte doch sowas immer prüfen auch ohne das ich Klassen explizit durch ein Interface markiere. Ala wenn das übergebene Objekt eine kämpfe Methode anbietet wird es als SchachSpielfigur betrachtet, um beim obigen Bsp. zu bleiben...
ich habe eine theoretische Frage zu Interfaces. Klassen die ein Interface implementieren müssen die vom Interface vorgegebenen Methoden ja konkretisieren. Bsp.
interface SchachSpielfigur { kämpfe(); }
Angenommen eine andere Methode erwartet nun als Parameter eine SchachSpielfigur dann müsste diese ja die Methode kämpfe() anbieten. Könnte der Compiler nicht einfach prüfen ob ein übergebenes Objekt die Methode kämpfe() anbietet auch ohne das man immer explizit implements SchachSpielfigur angeben müste?
Was ich meine:
Angenommen wir haben eine Klasse Bauer implements SchachSpielfigur. Hier konkretisiere ich die kämpfe Methode. Wäre es rein theoretisch aber nicht möglich das ich einfach in der Klasse Bauer ohne implements SchachSpielfigur eine kämpfe Methode erstelle. Wenn ich Bauer nun irgendwo als "SchachSpielfigur" nutzen wöllte müsste der Compiler doch nur prüfen ob Bauer eine kämpfe Methode anbietet. Das könnte er doch auch ohne das ich Bauer explizit mit implements Schachfigur "markiere".
Wo wäre ein Nachteil zu sehen wenn einfach jedes Objekt zulässig wäre was eine kämpfe Methode anbietet? Der Compiler könnte doch sowas immer prüfen auch ohne das ich Klassen explizit durch ein Interface markiere. Ala wenn das übergebene Objekt eine kämpfe Methode anbietet wird es als SchachSpielfigur betrachtet, um beim obigen Bsp. zu bleiben...