Hallo Leute, ich hab hier ein Verständnisproblem. Vll. könnt ihr weiterhelfen
Meine Klasse GraphImpl implementiert bereits die methoden 1 bis 4 der Schnittstelle Graph.
Nun soll die Klasse ObservableGraphImpl das Interface ObservableGraph implementieren.
Jetzt müssen deshalb nochmal die Methoden 1 bis 4 in der Klasse ObservableGraphImpl implementiert werden.
Was keinen Sinn macht, weil ich die Methoden bereits in GraphImpl implementiert habe.
Wie setzt man das ganze am besten um?
Dem UML nach besteht zwischen GraphImpl und ObservableGraphImpl lediglich eine Assoziation. Insofern musst Du natürlich die Methoden implementieren. Allerdings kann die Implementierung ja einfach an GraphImpl delegieren.
Dem UML nach besteht zwischen GraphImpl und ObservableGraphImpl lediglich eine Assoziation. Insofern musst Du natürlich die Methoden implementieren. Allerdings kann die Implementierung ja einfach an GraphImpl delegieren.
Ich glaube ich weiß wo hier das Problem versteckt ist...
Beispiel:
Java:
publicinterface IA {defaultvoidma1(){System.out.println("IA ma1()");}}interface IAA extends IA {@Overridedefaultvoidma1(){System.out.println("IAA ma1()");// wird nicht erreicht...}}interface IAAA extends IAA {@Overridedefaultvoidma1(){System.out.println("IAAA ma1()");}}class CA implements IA {@Overridepublicvoidma1(){
IA.super.ma1();}}class CB extends CA implements IAAA {@Overridepublicvoidma1(){super.ma1();// IAA.super.ma1(); funktioniert nicht...}publicstaticvoidmain(String[] args){newIA(){}.ma1();newIAA(){}.ma1();newIAAA(){}.ma1();newCA().ma1();newCB().ma1();}}
Die Methode ma1() vom Interface IAA kann in den implementierenden Klassen CA und CB nicht aufgerufen werden, egal was man anstellt...
Das Problem hat auch einen Namen, aber gerade vergessen.
Die Aufgabenstellung ist nicht unsinnig. Default-Methoden kommen da überhaupt nicht vor. Da ist einfach eine Vererbung von Interfaces. Die Implementierungen sind nur in den Klassen mit Impl am Ende.
Die Aufgabenstellung ist nicht unsinnig. Default-Methoden kommen da überhaupt nicht vor. Da ist einfach eine Vererbung von Interfaces. Die Implementierungen sind nur in den Klassen mit Impl am Ende.
default methoden sind nach meinem prof nur für "übergangs lösungen" geeignet... keine ahnung ob das so gilt aber hat sinn ergeben...also einfach nicht mit defaults umher ballern