Abstrakte Methode nutzen

Hallo Leute,

ich finde genug Sachen zum Thema String in abstrakter Methode aufrufen blabla, Youtube ist voll von den Tutorials. Nirgendswo wird gezeigt, wie ich ein Objekt an diese Methode übergebe...

Ich zeige euch am Besten meinen Code:

Code:
public abstract class Figur {
   
   //Variablen
       private double x;
       private double y;
       private double a;
       private double b;
       private double radius;
       
   //Konstruktoren
       public void Figure () {}

       public void Figure (double x, double y, double a, double b, double radius, double pi) {
           this.x = x;
           this.y = y;
           this.a = a;
           this.b = b;
           this.radius = radius;
           }

   //Setter
       public void setX(double neu) {x = neu;}
       public void setY(double neu) {y = neu;}
       public void setA(double neu) {a = neu;}
       public void setB(double neu) {b = neu;}
       public void setRadius (double neu) {radius = neu;}

   //Getter
       public double getX() {return x;}
       public double getY() {return y;}
       public double getA() {return a;}
       public double getB() {return b;}
       public double getRadius() {return radius;}
       
   //Abstrakte Methoden
       public abstract void area();
       public abstract void perimeter();

   public static void main(String[] args) {
       Figur Kreis = new Kreis();
       Kreis.setRadius(10);
       System.out.println(Kreis.area());

   }

}

Es geht hier jetzt um die beiden abstrakten Methoden area und perimeter.

Ich zeige auch einmal die erbende Klasse Kreis:

Code:
public class Kreis extends Figur {

   public static void main(String[] args) {

   }

   public void area() {
       
       double pi = 3.14159;
       
       double radi = 2 * pi * getRadius();
       
       System.out.println("Der Flächeninhalt ist: " + radi);
       
   }

   @Override
   public void perimeter() {
       // TODO Auto-generated method stub
       
   }

}

Ich habe jetzt mal die Fehler, die da so rumschwirren drin gelassen. Pi ist einmal in Kreis und einmal in Figur, ich weiß. Und println hab ich auch in beiden... ich bin immernoch am rumtesten, aber ich komme einfach nicht klar.

Wie bekomme ich es denn hin, dass ich einen Parameter an diese Formel in Kreis übergebe, diese ausgerechnet wird und dann auf die Konsole ausgegeben wird? Wenn ich das weiß, kann ich auch Quadrat, Rechteck, Dreieck etc. ableiten.

Vielen lieben Dank euch!
 

mrBrown

Super-Moderator
Mitarbeiter
Wie bekomme ich es denn hin, dass ich einen Parameter an diese Formel in Kreis übergebe, diese ausgerechnet wird und dann auf die Konsole ausgegeben wird? Wenn ich das weiß, kann ich auch Quadrat, Rechteck, Dreieck etc. ableiten.
Welche Parameter willst du denn an die Formel übergeben?

Dein Objekte ist ein Kreis, und ein Kreis sollte alle Parameter, die zu ihm gehören, kennen.
Ausgeben sollte die Funktion selbst am besten nichts, sondern stattdessen den errechneten Wert zurückgeben. Den gibts du dann dort aus, wo du die Funktion aufrufst.


(BTW, deine Figur-Klasse ist so, wie sie da steht, ungeeignet als Oberklasse für Figuren.
So hätte *jede* Figur die Variablen x, y, a, b und radius, was für einen Kreis schon komisch, spätestens aber für andere Formen völliger Unsinn ist)
 

Javinner

Top Contributor
Schokovanille2 hat gesagt.:
ich bin immernoch am rumtesten, aber ich komme einfach nicht klar
Es könnte hilfreich sein, sich hier einzulesen.

Erfahrungsgemäß lässt es sich sagen, dass die Vererbung in diesem Fall nur bedingt sinnvoll ist. Hier ist man besser beraten, wenn die jeweilige Form-Klassen ein Interface implementieren, welches allgemeine Methoden zur Berechnung von Fläche usw. für alle implementierenden Klassen zu Verfügung stellt, die für jede Klasse angemessen implementiert werden.
 
Danke für eure Antworten. Die Sinnhaftigkeit hinterfrage ich nicht, es geht um eine Aufgabe der Uni zum Thema Vererbung und ich soll jetzt alles in eine Superklasse (Figur) packen die dann an alle anderen spezifischeren Klassen (Kreis, Rechteck, Quadrat, Dreieck) vererbt. Die Superklasse ist abstrakt, und die Methoden area (Fläche) und Perimeter (Umfang) auch.


Welche Parameter willst du denn an die Formel übergeben?


Ich will, dass ich ein neues Objekt Kreis erstelle, diesem dann einen Wert für den Radius gebe und es dann an die Klasse Kreis übergebe und deren Methode für den Flächeninhalt. Die Methode area soll dann einfach den Flächeninhalt ausrechnen und mir zurück geben.


Genauso dann für das neue Objekt Rechteck Längen A und B, und dann an area übergeben oder Perimeter. Ich kann mir das nur so vorstellen, dass die abstrakte Methode area ja für jede spezifische Form anders berechnet wird und deswegen in der abstrakten Superklasse nur die Methode abstrakt drin ist und dann jeweils spezifisch in die Klasse implementiert werden muss.


Dein Objekte ist ein Kreis, und ein Kreis sollte alle Parameter, die zu ihm gehören, kennen.

Ausgeben sollte die Funktion selbst am besten nichts, sondern stattdessen den errechneten Wert zurückgeben. Den gibts du dann dort aus, wo du die Funktion aufrufst.


In der Klasse Kreis habe ich Pi drin und den Radius habe ich in der Superklasse. Eigentlich muss ich ja nur den Radius von der Superklasse übergeben und dann hat der Kreis ja alles da was er braucht um mir den Flächeninhalt zu geben. Ich habe mit return Wert probiert, ich habe mit Void und Sysout probiert, ich verzweifle an dem Punkt.


(BTW, deine Figur-Klasse ist so, wie sie da steht, ungeeignet als Oberklasse für Figuren.

So hätte *jede* Figur die Variablen x, y, a, b und radius, was für einen Kreis schon komisch, spätestens aber für andere Formen völliger Unsinn ist)


Ich dachte, dass nur die Abstrakten Methoden in JEDER Form drin sein müssen. Die Variablen kann ich ja so nutzen wie ich möchte, dachte ich zumindestens. Heisst für den Kreis kann ich mir Radius rausziehen, fürs Rechteck A und B, fürs Dreieck A B C…
 

MoxxiManagarm

Top Contributor
Java:
   //Konstruktoren
       public void Figure () {}

       public void Figure (double x, double y, double a, double b, double radius, double pi) {
           this.x = x;
           this.y = y;
           this.a = a;
           this.b = b;
           this.radius = radius;
           }

Das sind btw keine Konstruktoren. Zum einen heißen diese falsch (Klasse hat kein 'e'), zum anderen haben Konstrultoren keinen Rückgabewert.

So wie sie dastehen sind es eher setter-Methoden
 
Es könnte hilfreich sein, sich hier einzulesen.

Erfahrungsgemäß lässt es sich sagen, dass die Vererbung in diesem Fall nur bedingt sinnvoll ist. Hier ist man besser beraten, wenn die jeweilige Form-Klassen ein Interface implementieren, welches allgemeine Methoden zur Berechnung von Fläche usw. für alle implementierenden Klassen zu Verfügung stellt, die für jede Klasse angemessen implementiert werden.

Irgendwie geht's auch ums Thema Interface in der Aufgabe... aber da muss ich mich dann wohl noch genauer einlesen. Ich weiß nämlich noch nicht wie ich das mit Interface und implements genau geht...
 

Javinner

Top Contributor
@Schokovanille2
In dem von mir verlinkten Kapitel kannst du sehr genau lesen, wie und was.
Java ist auch eine Insel hat gesagt.:
Bisher haben wir Vererbung eingesetzt, und jede Klasse konnte Objekte bilden. Das Bilden von Exemplaren ist allerdings nicht immer sinnvoll, zum Beispiel soll es untersagt werden, wenn eine Klasse nur als Oberklasse in einer Vererbungshierarchie existieren soll. Sie kann dann als Modellierungsklasse eine Ist-eine-Art-von-Beziehung ausdrücken und Signaturen für die Unterklassen vorgeben. Eine Oberklasse besitzt dabei Vorgaben für die Unterklasse, das heißt, alle Unterklassen erben die Methoden. Ein Exemplar der Oberklasse selbst muss nicht existieren.

Dem nach sollte deine abstrakte Klasse nur die Methoden getArea() und getPerimeter() den vererbenden Klassen übergeben. Welche Klasse es ist, sollte der abstrakten Klasse egal sein, den die Parameter für eine vererbende Klasse, sagen wir Circle, werden direkt an Circle, genau geschrieben den Konstruktor, übergeben.
Die Klasse Circle ist dann dafür zuständig, die Methoden getArea() und getPerimeter() für die Klasse zu implementieren.
Java:
Rectangle rectangle = new Rectangle(10, 10);
Circle circle = new Circle(10);
       
System.out.println(rectangle.getArea());
System.out.println(circle.getArea());
/** Konsolenausgabe */
100.0
314.15
By the Way: schau dir die Klasse Math an, genau PI, an.
 

mrBrown

Super-Moderator
Mitarbeiter
Danke für eure Antworten. Die Sinnhaftigkeit hinterfrage ich nicht, es geht um eine Aufgabe der Uni zum Thema Vererbung und ich soll jetzt alles in eine Superklasse (Figur) packen die dann an alle anderen spezifischeren Klassen (Kreis, Rechteck, Quadrat, Dreieck) vererbt. Die Superklasse ist abstrakt, und die Methoden area (Fläche) und Perimeter (Umfang) auch.
Die Oberklasse wird aber in jedem Kurs als völliger Unsinn gelten.
Ich bezweifle, dass die Aufgabe so gemeint ist, wie du sie verstanden hast, zeig doch mal die genaue Aufgabenstellung.

In der Klasse Kreis habe ich Pi drin und den Radius habe ich in der Superklasse. Eigentlich muss ich ja nur den Radius von der Superklasse übergeben und dann hat der Kreis ja alles da was er braucht um mir den Flächeninhalt zu geben. Ich habe mit return Wert probiert, ich habe mit Void und Sysout probiert, ich verzweifle an dem Punkt.
Du musst von der Super- an die Sub-Klasse nichts übergeben - die Sub-Klasse *ist* ja eine Instanz der Super-Klasse.
Du kannst einfach auf die Variablen zugreifen (sofern die Sichtbarkeit passt).

Ich dachte, dass nur die Abstrakten Methoden in JEDER Form drin sein müssen. Die Variablen kann ich ja so nutzen wie ich möchte, dachte ich zumindestens. Heisst für den Kreis kann ich mir Radius rausziehen, fürs Rechteck A und B, fürs Dreieck A B C…
Ja, müssen sie auch.
*Alles* aus der Oberklasse ist Teil der Unterklasse.

Natürlich kannst du in Kreis die anderen Variablen ignorieren, dass hat dann aber absolut nichts mehr mit sinnvoller Vererbung zu tun, sondern ist einfach nur Unsinn.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J abstrakte Methode in Klasse mit Rückgabetyp der abgeleiteten Klasse Java Basics - Anfänger-Themen 5
A Interface Abstrakte Interface Methode kann nicht benutzt werden Java Basics - Anfänger-Themen 10
A Abstrakte Datentypen - Methode delete Java Basics - Anfänger-Themen 6
E verdeckte abstrakte Methode sinnvoll? Java Basics - Anfänger-Themen 7
A Vererbung Abstrakte Klasse mit Methode die Objekte der Subklassen benutzt? Java Basics - Anfänger-Themen 7
B Abstrakte Methode vs. Interface Java Basics - Anfänger-Themen 2
V Vererbung Abstrakte Methode Java Basics - Anfänger-Themen 3
StupidAttack Abstrakte Methoden in nicht-abstrakter Methode in abstrakter Klasse Java Basics - Anfänger-Themen 6
S Abstrakte Klasse, festlegen, dass Methode verändert werden muss. Java Basics - Anfänger-Themen 4
J abstrakte klasse und methode super Java Basics - Anfänger-Themen 2
G Abstrakte Methode in gleicher Klasse aufrufen Java Basics - Anfänger-Themen 5
L abstrakte Methode nicht implementiert! Java Basics - Anfänger-Themen 5
A Eine abstrakte Methode static machen? Java Basics - Anfänger-Themen 4
J Methodenaufrufe abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 17
M Abstrakte Klassen - Notation Java Basics - Anfänger-Themen 9
S Vererbung Abstrakte Methoden: Wozu das Ganze?! Java Basics - Anfänger-Themen 7
S abstrakte methoden in subclass? Java Basics - Anfänger-Themen 7
E abstrakte Klasse implementiert ein Interface Java Basics - Anfänger-Themen 40
G Abstrakte Klassen Java Basics - Anfänger-Themen 11
G Java Abstrakte Methoden Java Basics - Anfänger-Themen 2
T Abstrakte Klasse und Interfaces Java Basics - Anfänger-Themen 12
D Abstrakte Klasse, Konstruktorkette, Attribute setzen Java Basics - Anfänger-Themen 12
L Abstrakte Typen und Schnittstellen Java Basics - Anfänger-Themen 19
J Objekte und Abstrakte Klassen Java Basics - Anfänger-Themen 2
I Abstrakte Klasse - static Attribute deklarieren Java Basics - Anfänger-Themen 14
T Übungsaufgabe abstrakte Klasse Java Basics - Anfänger-Themen 21
J Java Interface/abstrakte Klassen Java Basics - Anfänger-Themen 2
M Erste Schritte Prüfungsbeispiel: Interface / abstrakte Klassen Java Basics - Anfänger-Themen 8
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Datentypen Abstrakte Datentypen Java Basics - Anfänger-Themen 0
kilopack15 Beziehung Interface - (abstrakte) Klasse -Unterklasse Java Basics - Anfänger-Themen 3
K Abstrakte Klasse: vererbte Klasse; instance of? Java Basics - Anfänger-Themen 26
N Vererbung Abstrakte Klasse stateful Java Basics - Anfänger-Themen 3
D Abstrakte Klassen Verständniss Frage Java Basics - Anfänger-Themen 4
D Methoden Abstrakte Methoden Java Basics - Anfänger-Themen 3
W Abstrakte Klasse mit Variable? Java Basics - Anfänger-Themen 2
D Interface Interfaces und abstrakte Klassen implementieren Java Basics - Anfänger-Themen 4
B Abstrakte Klassen Java Basics - Anfänger-Themen 7
C Abstrakte und virtuelle Methoden in Java Java Basics - Anfänger-Themen 4
W Abstrakte und konkrete Klasse Java Basics - Anfänger-Themen 4
S Abstrakte Klassen Java Basics - Anfänger-Themen 2
C Dynamische Referenz & abstrakte Klassen Java Basics - Anfänger-Themen 3
F Abstrakte Klasse doch zum "Teil" instanzieren? Java Basics - Anfänger-Themen 4
V Interface Interfaces und abstrakte Klassen Java Basics - Anfänger-Themen 3
H Abstrakte Basisklasse Verständnisproblem! Java Basics - Anfänger-Themen 8
G Abstrakte Klassen - theoretische Frage Java Basics - Anfänger-Themen 2
OnDemand Abstrakte Klassen Java Basics - Anfänger-Themen 4
T OOP Abstrakte Klassen und ihre Kinder: wie läuft das? Java Basics - Anfänger-Themen 3
M Statische Methoden in Interface/Abstrakte Klasse Java Basics - Anfänger-Themen 6
M Abstrakte Klassen Java Basics - Anfänger-Themen 2
J Interfaces Abstrakte Klassen Java Basics - Anfänger-Themen 15
M Interface und Abstrakte Klassen Java Basics - Anfänger-Themen 12
N Datentypen abstrakte Klasse wird instanziert Java Basics - Anfänger-Themen 3
D Methoden abstrakte Methoden und Rückgabewerte Java Basics - Anfänger-Themen 2
propra Interface - abstrakte Klasse Java Basics - Anfänger-Themen 18
N Abstrakte Klasse Java Basics - Anfänger-Themen 28
R Namenskonvention abstrakte Klassen Java Basics - Anfänger-Themen 6
C OOP Objektstruktur: abstrakte Klassen Java Basics - Anfänger-Themen 3
L Über abstrakte Klasse auf eine Klasse zugreifen? Java Basics - Anfänger-Themen 6
T OOP abstrakte klassen - methoden Java Basics - Anfänger-Themen 8
M Abstrakte Klassen Java Basics - Anfänger-Themen 21
J Welchen Sinn haben abstrakte Methoden? Java Basics - Anfänger-Themen 4
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
D Abstrakte Klassen und Interfaces als Paramter in Funktionen Java Basics - Anfänger-Themen 3
T Abstrakte Klasse Java Basics - Anfänger-Themen 3
S Abstrakte Klasse Java Basics - Anfänger-Themen 5
T Interfaces: Braucht man abstrakte Klassen eigentlich noch? Java Basics - Anfänger-Themen 3
T OO, Konstruktor, abstrakte Methoden Java Basics - Anfänger-Themen 13
K Abstrakte Klasse vs. Interface Java Basics - Anfänger-Themen 21
T Abstrakte Klassen Java Basics - Anfänger-Themen 6
C abstrakte Klassen mögen mich nicht... Java Basics - Anfänger-Themen 2
I Abstrakte Klassen Java Basics - Anfänger-Themen 8
K Abstrakte Klasse bilden? Java Basics - Anfänger-Themen 11
D Zusammenfassung von Klassen (Vererbung? Abstrakte Klass? ...?) Java Basics - Anfänger-Themen 8
H Warum Java? | Abstrakte Klasse = Modul? Java Basics - Anfänger-Themen 20
G Abstrakte Klassen und Methoden Java Basics - Anfänger-Themen 3
C Schnittstellen und Abstrakte Klassen Java Basics - Anfänger-Themen 3
I Abstrakte Klassen Java Basics - Anfänger-Themen 22
H Eine Abstrakte Klasse muss. Java Basics - Anfänger-Themen 7
G Abstrakte Klasse "Point" Java Basics - Anfänger-Themen 2
G Abstrakte Klassen ? Java Basics - Anfänger-Themen 9
M abstrakte Klasse Java Basics - Anfänger-Themen 3
nadoria abstrakte Klassen Java Basics - Anfänger-Themen 6
F Abstrakte Klasse: Konstruktor vs init() Java Basics - Anfänger-Themen 13
M Unterscheid Abstrakte Klassen/Interface Klassen? Java Basics - Anfänger-Themen 7
G Abstrakte Klasse (was passiert hier) Java Basics - Anfänger-Themen 3
T abstrakte Klassen? Java Basics - Anfänger-Themen 2
G Interface oder Abstrakte Klasse? Java Basics - Anfänger-Themen 3
G konkretes beispiel: interface hier besser als abstrakte kl. Java Basics - Anfänger-Themen 4
Acha Unterschied Interface - abstrakte Klasse Java Basics - Anfänger-Themen 4
M abstrakte klassen und interfaces Java Basics - Anfänger-Themen 2
B OOP: abstrakte klasse implementiert interface Java Basics - Anfänger-Themen 3
M abstrakte klassen / Schnittstellen Java Basics - Anfänger-Themen 4
H abstrakte Klassen, Interfaces Java Basics - Anfänger-Themen 13
D Abstrakte Klasse Graphics Java Basics - Anfänger-Themen 3
R Interfaces durch abstrakte Klassen ersetzbar? Java Basics - Anfänger-Themen 8
A Abstrakte Klasse Java Basics - Anfänger-Themen 3
G abstrakte klasse Java Basics - Anfänger-Themen 6
F Abstrakte Klasse Baum Java Basics - Anfänger-Themen 6
A Abstrakte Klassen und Interfaces Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben