Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo, non-static variable this cannot be referenced from a static context, wenn ich eine neue Wand erstellen will. In der static main Methode will ich also etwas nicht static aufrufen, aber ich versteh beim besten Willen nicht, wo ich in diesem Beispiel etwas falsch mache. Danke im voraus
Java:
import java.util.Scanner;
public class UebungBau{
public abstract class Bauteil {
Material []material=new Material[20]; //maximal 20 verschiedene Materialien
public abstract double berechneGrundflaeche();
public abstract double berechneVolumen(); //abstrakte methoden haben keinen rumpf
public abstract double berechneMasse();
}
public class Material {
String Name;
double emodul;
double dichte;
}
public class Punkt2d {
double x;
double y;
}
public class Rundstuetze extends Bauteil{ // extend heißt Rundstuetze is a Bauteil
public double berechneGrundflaeche(){
double a=0;
return a;
}
public double berechneVolumen(){
double v=0;
return v;
}
public double berechneMasse(){
double m=0;
return m;
}
double radius;
double hoehe;
Punkt2d mittelpunkt;
}
public class Wand extends Bauteil {
public double berechneGrundflaeche(){
double a=0;
return a;
}
public double berechneVolumen(){
double v=0;
return v;
}
public double berechneMasse(){
double m=0;
return m;
}
double hoehe;
double breite;
Punkt2d punkt1;
Punkt2d punkt2;
public void setKoordinaten(){
Scanner scanner=new Scanner(System.in);
System.out.println("Bitte gib Punkt 1 x Koordinate ein");
punkt1.x=scanner.nextDouble();
System.out.println("Bitte gib Punkt 1 y Koordinate ein");
punkt1.y=scanner.nextDouble();
System.out.println("Bitte gib Punkt 2 x Koordinate ein");
punkt2.x=scanner.nextDouble();
System.out.println("Bitte gib Punkt 2 y Koordinate ein");
punkt2.y=scanner.nextDouble();
}
}
public static void main(String[]args){
Wand neueWand=new Wand();
neueWand.hoehe=2.80;
neueWand.breite=7.49;
neueWand.setKoordinaten();
}
}
Demnach benötigst du erst eine Instanz der Superklasse UebungBau, desweiteren würde ich empfehlen , der übersicht halber nicht soviele Innere klassen zu erstellen die von UebungBau erben, sondern diese als Seperate Klassen zu erstellen , oder ein gemeinsames Interface zu erstellen um nach OO-Prinzipien, die Komposition der Vererbung vorzuziehen.
[TIPP]Da deine Klasse Bauteil abstrakt ist und du aber dort nicht eine Methode ausformulierst, könntest du dieses auch gleich als Interface erstellen , insofern dies in deiner Projektplanung Sinn machen würde [/TIPP]