Schlechter Stil

jonasvi

Mitglied
Guten Tag,

zu dem Code eine Frage:
Java:
public class Student {
  static int version = 12;
  int matrikel;

  public static void teste() {
    Student jessica = new Student();
    matrikel = 234567;
    jessica.matrikel = 123456;
    Student.matrikel = 456789;
    System.out.println( version );
    System.out.println( jessica.version );
    System.out.println( Student.version );
  }
}
Hier sollten nun falsche Anweisungen bzw schlechter Stil stecken (ist eine freiwillige Übungsaufgabe - Mathestudent)

Also wenn ich vor "int matrikel" noch ein "static" davorschreibe, geht die Fehlermeldung
"Cannot make a static reference to the non-static field Student.matrikel" weg.
Aber dann kommt die neue Fehlermeldung "The static field Student.matrikel should be accessed in a static way".

Das verwirrt etwas. Wo ist der triviale Fehler?


Mit freundlichen Grüßen,
jonasvi
 
Zuletzt bearbeitet von einem Moderator:

Bitfehler

Bekanntes Mitglied
Wie die Aufgabenstellung schon aussagt, sind da Fehler drin. Ohne einigen Zeilen zu ändern bzw. zu löschen, wird es nicht gehen. Das Problem ist das statische-Sachen mit einem objektorientierten Ansatz vermischt werden, das sagt auch die Fehlermeldung.
Ohne die Aufgabe zu lösen, kann ich dir dazu keinen weiteren Hinweis geben.
 

jonasvi

Mitglied
Gut.

Code:
public class Student {
private int version = 12; 
int matrikel;

public void teste() {                <- hab hier das static weggemacht
Student jessica = new Student();
matrikel = 234567;
jessica.matrikel = 123456;
//Student.matrikel = 456789;    <- auskommentiert, weil ich nicht weiß was der Nutzen ist?
System.out.println( version );
System.out.println( jessica.version );
//System.out.println( Student.version ); <- auskommentiert s. o.
}
}

Wäre das so richtig? Oder am Sinn der Aufgabe vorbei?

Liebe Grüße,
jonasvi
 

stg

Top Contributor
Man kann Attribute auch ohne Getter ansprechen, solange die Sichtbarkeit passt. Hier ists im gesamten package sichtbar, wäre aber egal, da deine Funktion in der Klasse Student steht.

Man kann übrigens auch mit Gettern die Attribute nur dann ansprechen, wenn die Sichtbarkeit (von den Gettern) passt ;)
 

Neue Themen


Oben