Stef: OOP-Grundlagen

Moin,

folgende Datei oop1.java erzeugt beim Kompilieren einen Fehler:

public class oop1
{

public class Auto
 {
  public String name;
  public int wert;
  public int leistung;
 }

public static void main(String[] args)
 {
 // Beispielauto
 Auto eins = new Auto();

eins.name = "Auto A";
 eins.wert = 25000;
 eins.leistung = 170;

System.out.println("Name........: " + eins.name);
 System.out.println("Wert........: " + eins.wert);
 System.out.println("Leistung....: " + eins.leistung);
 }

}

Folgender Fehler wird von javac angezeigt:

oop1.java:20: non-static variable this cannot be referenced from a static contex
t
        Auto eins = new Auto();
                    ^
1 error

Beispiel ist abgeleitet aus "Handbuch der Java-Programmierung", siehe http://javabuch.de.

  1. Hallo Stef,

    Du hast "falsch" Geklammert. bzw. so geklammert das "Auto" eine innere Klasse von oop1 ist, aber das wird bestimmt nicht im Grundlagenkapitel zur oop behandelt.

    Klammer wie folgt:

    class Auto
    {
       public String name;
       public int wert;
       public int leistung;
    }

    public class oop1
    {
      public static void main(String[] args)
      {
        Auto eins = new Auto();

    eins.name = "Auto A";
        eins.wert = 25000;
        eins.leistung = 170;

    System.out.println("Name........: " + eins.name);
        System.out.println("Wert........: " + eins.wert);
        System.out.println("Leistung....: " + eins.leistung);
      }
    }

    Dateiname: oop1.java

    Dann oop1.java starten und compilieren. Wenn du die Klasse Auto auch public haben möchtest muss sie in einer eigenen Datei stehen und getrennt kompiliert werden.

    Gruß,

    ARne.

  2. Hallo Stef,

    public static class Auto
    {
      public String name;
      public int wert;
      public int leistung;
    }

    Damit sollte es gehen.

    Ohne Statik gehört die Klasse zu einer Instanz der umgebenden Klasse. Du kannst sie also nur erzeugen, indem Du new Auto() in eine Objekt-Methode von oop1 aufrufst oder indem Du instanz.new Auto() aufrufst, wobei instanz eine Instanz der Klasse oop1 ist.

    Grüße

    Daniel