Klassen Abstrakte Klassen

Slater1407

Neues Mitglied
Hallo,

für eine "Hausaufgabe" muss ich eine abstrakte Klasse "Querschnitt" erzeugen mit einer abstrakten Methode "flaeche" (um die Fläche zu berechnen). Dazu soll es 3 weitere Klassen "Rechteck", "Halbkreis" und "Verbund" geben aus denen später die Gesamtfläche des Querschnittes errechnet werden soll.
Mein Problem ist nun, dass ich, um die Fläche einen Halbkreises zu berechnen, nur den Radius brauche (also eine Variable) und fürs Rechteck zwei Variablen brauche, und wir im Studium gelernt haben, dass man Variablen in Klassen stets private machen sollte und den Zugriff darauf mit gettern und settern machen soll. Außerdem möchte ich in der Klasse "Verbund" zwei Objekte von Rechteck und ein Objekt von Halbkreis erstellen aber jedoch vom Typ Querschnitt (Querschnitt halbkreis = new Halbkreis()😉. Dadurch kann ich aber nur auf die eine abstrakte Methode "flaeche" zugreifen und nicht auf den Rest, also die getter und setter.

Kann mir jemand erklären wieso dies nicht funktioniert oder was ich anders machen muss, dass es funktioniert?

mfG Slater1407
 
Die Methode flaeche() ist in der Klasse Querschnitt abstrakt, wird also nicht implementiert.
Erst in den erbenden Klassen wird die Methode implementiert, und darin hast du Zugriff auf deine Member.

Und du kannst natürlich schreiben:
Java:
Querschnitt querschnitt = new Halbkreis(23);
double fl = querschnitt.flaeche();
Es wird dann die Methode flaeche() von Halbkreis aufgerufen
 
Ja also das ist leider nicht mein Problem... mein Problem ist, dass ich nicht auf die zusätzlichen Methoden, die ich in den erbenden Klassen habe, zugreifen kann. Laut der Vorlesungsfolie müssen die erbenden Klassen ja mindestens die abstrakten Methoden der Superklasse enthalten und können zusätzlich noch eigene Methoden besitzen. Auf diese kann ich auch zugreifen, wenn ich dem Halbkreis auch die Klasse "Halbkreis" als Typ gebe. Wenn ich jedoch als Typ die Superklasse "Querschnitt nehme" kann ich auf die zusätzlichen Methoden von "Halbkreis" nicht zugreifen.
 
Wenn ich jedoch als Typ die Superklasse "Querschnitt nehme" kann ich auf die zusätzlichen Methoden von "Halbkreis" nicht zugreifen.
Aus der Querschnitt-Klasse heraus musst du ja auch nicht auf die zusätzlichen Methoden zugreifen. Es ist sicher gestellt, dass es eine Methode flaeche() in den Unterklassen gibt. Die kann man also aufrufen. Ob aus flaeche() heraus dann spezifische Methoden der Unterklasse aufgerufen werden, ist der Querschnitt-Klasse egal.
 

Neue Themen


Zurück
Oben