Methode von Subklassen einzeln überschreiben

JavaMeetsBlueJ

Bekanntes Mitglied
Hallo,

ich habe folgendes Problem: Ich habe eine Abstrakte Klasse
Java:
MyAbstractInputMask
. Diese Klasse implementiert das Inferface
Java:
Observer
.
Sie dient als Vorbild für verschiedene Eingabemasken. Wie kann ich nun für jede von
Java:
MyAbstractInputMask
erbende Klasse die Methode
Java:
update()
einzeln überschreiben? Ich muss sie ja nichteinmal in der abstrakten Klasse überschreiben.

JavaMeetsBlueJ
 
Normalerweise erklärt sich genau das von selbst ;-) Aber Eclipse fordert erst " add unimplemented Methods" wenn die Klasse nicht mehr abstract ist. Woran liegt das?
 
Was soll dadurch erreicht werden?

1) Du machst nix:

Alle Klasse, die von deiner KLasse MyAbstractInputMask erben, müssen update() implementieren.

2) Du markierst sie als abstact. (Weiß gar nicht ob das geht in diesem Fall)

Alle Klasse, die von deiner KLasse MyAbstractInputMask erben, müssen update() implementieren.
 
Zuletzt bearbeitet:
Hab es jetzt wie folgt gemacht:

Java:
@Override
	public abstract void update(Observable arg0, Object arg1);

damit sind alle Subklassen gezwungen, update() zu implementieren.
[EDIT]Das waren sie vorher nicht. Zumindest gab Eclipse keine Meldung raus, dass die Subklassen update() implementieren müssen, obwohl die Superklasse von Observable erbt[/EDIT]
 
Zuletzt bearbeitet:
Ich nenne mal die Klasse MouseAdapter als Beispiel.

Diese ist eine (Adapter-) Klasse für die Interfaces MouseListener und andere.

Alle Interface-Methoden sind leer implementiert.

Nun kann eine selbst definierte Klasse von MouseAdapter erben und braucht nur noch eine Methode überschreiben und die anderen leer implementiert lassen.
 
Superklasse

Java:
package com.viewComponents;
import java.util.Observable;
import java.util.Observer;
import javax.swing.JFrame;

public abstract class AbstractGuiMask implements Observer{

	JFrame myAbstractFrame = createFrameMask();
	
	
	public JFrame createFrameMask(){
		
		JFrame tempFrame = new JFrame();
		
		tempFrame.setSize(400,400);
		tempFrame.setResizable(false);
		tempFrame.setLocation(100, 100);
		tempFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		return tempFrame;
		
	}
	
	
	public JFrame getFrame(){
		
		return myAbstractFrame;
	}


	@Override
	public abstract void update(Observable arg0, Object arg1);
	
	
}
Erbende Klasse
Java:
package com.viewComponents;
import java.util.Observable;
import javax.swing.JFrame;

public class GuiMaskBegegnung extends AbstractGuiMask {

	JFrame myFrame;

	public GuiMaskBegegnung() {

		myFrame = getFrame();
		myFrame.setVisible(true);
		myFrame.setTitle("Begegnung");
	}

	@Override
	public void update(Observable arg0, Object arg1) {
		// TODO Auto-generated method stub

	}

}

Ich bekomme keinerklei Fehlermeldung wenn ich update() nicht in GuiMaskBegegnung implementiere, vorausgesetzt die Methode ist in der Superklasse nicht als abstract deklariert, obwohl das Interface Observer in der Superklasse implementiert ist.
 
Zuletzt bearbeitet:
Gibt bei mir in Eclipse Compile-Fehler, wie erwartet

Java:
The type GuiMaskBegegnung must implement the inherited abstract method Observer.update(Observable, Object)
oder
Java:
The type GuiMaskBegegnung must implement the inherited abstract method AbstractGuiMask.update(Observable, Object)
 
Hast du die Methode update jetzt in der Superklasse gelassen oder ist sie einfach nicht mehr abstract?
Bei mir kommt weiterhin nichts.
[EDIT]Oder einfacher: Was hast du genau für Code?[/EDIT]
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben