G
Guest
Gast
Hallo,
Entschuldigung, wenn diese Frage schon einmal gestellt wurde, ich hab schon dannach gesucht auch in Google aber nichts gefunden. Die Sache ist die...
Ich wollte ein Interface RowInterface erstellen, das die Zeile einer Tabelle darstellen soll
Dann wolle ich das Interface implementieren mit
CellInterface und Cell sind auch implementiert.
Jetzt sagt der Konstruktor aber, dass ich bei der Row-Klasse nicht Cell als Parameter und Rückgabewert benutzen darf, sondern CellInterface benutzen muss. Ich habe immer gedacht, wenn eine Klasse ein Interface implementiert kann man sie auch immer dort einsetzen wo dieses Interface verlangt wird.
Ich könnte ja auch z.B. das CellInterface an setCell übergeben, aber dann könnten ja auch andere Klassen die das Interface implementieren übergeben werden, was ich ja nicht möchte, da es ja eine konkrete Implementation der Klasse ist und z.B. in der setCell Methode mit Methoden aus Cell gearbeitet wird, die im Interface nicht vorhanden sind. Ist das nicht erlaubt?
Wahrscheinlich habe ich einfach das Interface-Prinzip noch nicht verstanden. Es wäre echt nett, wenn mir vielleicht jemand erklären könnte, warum das so ist und wie mans richtig macht.
Entschuldigung, wenn diese Frage schon einmal gestellt wurde, ich hab schon dannach gesucht auch in Google aber nichts gefunden. Die Sache ist die...
Ich wollte ein Interface RowInterface erstellen, das die Zeile einer Tabelle darstellen soll
Code:
public interface RowInterface {
.....
public CellInterface getCell(int i) { ... }
public void setCell(CellInterface cell) { .... }
}
Dann wolle ich das Interface implementieren mit
Code:
public class Row implements RowInterface {
.....
public Cell getCell(int i) { ... }
public void setCell(Cell cell) { ... }
}
CellInterface und Cell sind auch implementiert.
Jetzt sagt der Konstruktor aber, dass ich bei der Row-Klasse nicht Cell als Parameter und Rückgabewert benutzen darf, sondern CellInterface benutzen muss. Ich habe immer gedacht, wenn eine Klasse ein Interface implementiert kann man sie auch immer dort einsetzen wo dieses Interface verlangt wird.
Ich könnte ja auch z.B. das CellInterface an setCell übergeben, aber dann könnten ja auch andere Klassen die das Interface implementieren übergeben werden, was ich ja nicht möchte, da es ja eine konkrete Implementation der Klasse ist und z.B. in der setCell Methode mit Methoden aus Cell gearbeitet wird, die im Interface nicht vorhanden sind. Ist das nicht erlaubt?
Wahrscheinlich habe ich einfach das Interface-Prinzip noch nicht verstanden. Es wäre echt nett, wenn mir vielleicht jemand erklären könnte, warum das so ist und wie mans richtig macht.