Sorry mein Fehler dein interface kann nur andere interfaces extenden.
Sprich du musst deine (Auslagerungs) Klasse in ein Interface umbauen dann kannst du ein interface erstellen das Auslagerungsklasse extended und dieses interface dann selbst implementen.
ad OOP:
Nur weils OOP ist heisst das nicht das du keine Vars and den Konstruktor uebergeben darfst.
" KanalGeradeBerechnung ausgelagert = new KanalGeradeBerechnung();
ausgelagert.setBreite1(50);
ausgelagert.setLaenge(50);
ausgelagert.setHoehe1(50);
ausgelagert.setDicke(1);
ausgelagert.setAnzahl(1); "
ist ein prime candiate fuer
new KanalGeradeBerechnung(50, 50, 50, 1, 1);
Aber das nur am Rande. Ausserdem verstehe ich nicht warum du wenn du schon packages verwendest und das package gui nennst erst recht saemtliche Berechnungen da drinnen hast.
Anyway ich versteh noch immer nicht wozu du mehrfachvererbung brauchst (aber vielleicht bin ich auch einfach nur zu bloed) bzw was du versuchst zu bezwecken habe deinen Code mal compiliert und das funktionier ja alles soweit (abgesehen davon das du in deiner GUI nur einen button und keine Eingabe Felder hast).
Wenn man in diesem Fenster etwas ein gibt und auf Berechnen drückt sollte die der Konstruktor die Werte imit Settern in die Vierte Klasse schreiben und den Konstruktor der Dritten Klasse aufrufen der nur für die Berechnung da ist, dieser holt sich die Werte mit Gettern aus der Vierten von der er auch erbt, rechnet das Ergebnis aus und schreibt es mit einem Setter wieder in eine Variablen der Vierten Klasse. Von dort holt sich dan die Zweite Klasse den Wert und gibt in aus.
Das macht irgendwie wenig Sinn.
Die Idee an einem Konstruktor ist genau die das er die Werte die die Klasse braucht nimmst und in die lokalen variablen schreibt. Wenn der eh schon von der 4. erbt dann kannst du ja glecih die 4. weg lassen und den 3. einfach mit den variablen die zur berechnung da sind instantiaten. Desweiteren sollte dann die 3. Klasse nicht mit Settern in die 2. schreiben sondern entweder die 2. ruft die berechnung von der 3. auf und kriegt das ergebnis als return oder geted es eifach von der 3.
Ich wuerde das so machen.
Code:
KanalGeradeBerechnung berechnung = new KanalGeradeBerechnung(50, 50, 50, 50, 1, 1);
double test = berechnung.calculate();
die KanalBerechnung sieht dann so aus
Code:
public class KanalGeradeBerechnung extends Berechnung
{
public KanalGeradeBrechnung(int b, int l, int h, int d, int a)
{
super(a,b,0,l,h,0,0,d,0,0,0,0,0,0,0,0,0); //nun mach auch vererbung Sinn
}
public double calculate()
{
System.out.println(getAnzahl() + " Zahl die in die Berechnung eingelesen wird");
return ( getAnzahl() * ( 2 * getBreite1() * ( getHoehe1() + getLaenge() ) ) ) / 1000000 );
/* setFlaeche hat nur Sinn wenn du nachher den Wert nochmal verwenden willst allerdings wird die selbe Berechnung den Wert ja nicht nochmal verwenden vielmehr kann die Klasse die den Wert requested hat ihn speichern wie du sast Berechnung ist NUR fuer Berechnung nicht als Speicher gedacht */
}
}
und Berechnung
Code:
public class Berechnung
{
public Berechnung(double a, double b1, double b2, double l, double h1, double h2, double d1, double d2, double di, double, r, double w, double rp, double rp2, double st, double me, double mf)
{
this.anzahl = a;
this.breite1 = b1;
........... //etc
}
Jetzt bringt dir auch die Berechnung was weil du verschiedene Berechnungen haben kannst die alle von Berechnung erben und alle verschiedene felder setzen und zur berechnung verwenden.
btw es ist konvention das normale methods mit kleinbuchstaben beginnen.
Desweiteren verstehe ich nicht wozu du eine main in KanalGeradeVisuell brauchst.
Hoffe das hilft dir einigermassen weiter.
MFG