Problem bei Vererbung

Status
Nicht offen für weitere Antworten.

xiu

Mitglied
Hallo.
Folgendes Problem: Ich habe eine Klassehierachie wie folgt:
GeometrischesObjekt und dann 2 Unterklassen Linie und Rechteck

Eigenschaften wie z.b. die Position haben die 2 ja gemein, aber zum beispiel eine fuellung kann logischerweise nur ein Rechteck haben.

Dementsprechend hat auch ein Instanziertes Rechteckobjekt eine eigenschafft fuellung - private und erreichbar über eine getter methode (einfach nur ein return isgefuellt)

Um nun das Problem der Sichtbarkeit zu lösen, weil anders diese Methode nicht angesprochen werden kann habe ich in der Oberklasse eine 'Dummy Methode' kreiert, der folgenden form
Java:
public boolean isFilled(){
		return true;
	}
abgesehen davon, dass das keine sonderlich schöne lösung ist funktioniert es auch nicht. theoretisch, wie ihc es verstanden habe sollte ja die methode der unterklasse diese methode überschreiben, aber wenn ich sie aufrufe krieg ich immer true zurück, egal wie der eigentliche zustand ist.

schöne grüße und nen guten start ins wochenende
 
du kannst
public abstract boolean isFilled();
definieren und die Klasse abstrakt machen, dann müssen die Subklassen die Methode korrekt implementieren,

warum es derzeit nicht geht kann man ohne Code kaum ahnen, jeder Tippfehler führt bereits zur Abweichung
 
du kannst
public abstract boolean isFilled();
definieren und die Klasse abstrakt machen, dann müssen die Subklassen die Methode korrekt implementieren,

warum es derzeit nicht geht kann man ohne Code kaum ahnen, jeder Tippfehler führt bereits zur Abweichung
fraglich ob man eine abstrakte methoden definieren sollte wenn ein Grossteil der Kinder diese Methode eh nicht nutzen koennen (z.b. Linie -> isFilled) EDIT: ja gut - die Frage wieviele Kinder brauchen das <-> brauchen es nicht...
Da faende ich eine default Implementierung die false zurueckliefert sinnvoller.

warum es nicht klappt sieht man aber ja nur mit code
 
In GeoObjekte
[Java]
public boolean isFilled(){
return false;
}
[/Java]

Und Objekte

[Java]
public class Rechteck extends Objekte {

private boolean gefuellt=false;

//Getter Methode für die VAriable
public boolean isFilled(){
return gefuellt;
}
//Und Set
public void setgefuellt(boolean x){
gefuellt = x;
}

[/Java]

folgendes wird ausgeführt:

objects[0].setgefuellt(true);

wobei objects ein array vom typ GeoObjekte Ist.

Eine Testweise ausgabe der Variable gefuellt aus der Unterklasse Rechteck liefert nun false.
Der aufruf von isFilled aus dem Hauptprogramm liefert aber, korrekterweise true zurück.
 
poste auch die main, auch die Oberklasse, das ganze Programm mit beiden Ausgaben, die du nicht verstehst,
 
dein Code ist ohne jede Grunlage,

ein vollständiges Programm sieht so aus:
Java:
zensiert

Ausgabe
Code:
zeichne1: true
zeichne2: #
#
true
siehe da, kein Problem 😉

vielleicht ist bei dir eine der Ausgaben in fuellebrett();
welches VOR dem Setzen von true ausgeführt wird
 
Zuletzt bearbeitet von einem Moderator:
wenn ich deinen Code in meinem Posting entfernen soll, sag Bescheid,
allgemein ist es etwas seltsam, auch gleich die Fragen usw. zu löschen..
 
ja wär mir ganz lieb

bin ein wenig paranoid, muss das ganze später noch mal abgeben und plagiatsvorwürfe sind immer etwas unschön wenn einer meiner kommilitonen hier drüber stolpern sollte

wenn aber jemand das hier liest und noch fragen hat, kann er mir auch gerne eine pn schreiben


peace
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben