java syntax-probs

MisaghZ
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 133
Registriert: 11. Okt 2007 15:50

java syntax-probs

Beitrag von MisaghZ » 15. Dez 2007 11:56

hi,
ich hab sehr schlimme java-syntax-probleme die es mir garnicht erlauben einfachste programme zum laufen zu bringen

wenn ich z.b. folgendes eingebe:

public int bla;
bla = 4;

dann sagt er mir:
Illegal modifier for parameter bla; only final is permitted

wieso?
warum kann ich nicht sagen int ist public, private oder static?

yourmaninamsterdam
Nerd
Nerd
Beiträge: 681
Registriert: 26. Okt 2006 14:04
Kontaktdaten:

Beitrag von yourmaninamsterdam » 15. Dez 2007 12:15

Zunächst mal sind das verschiedene Typen von modifiern.
Du hast einerseits die Sichtbarkeiten: public, (default), protected, private (default ist, wenn dun nichts angibst.
Diese verwendet man ausschließlich zur Deklaration von Klassen- und Instanzvariablen; nicht aber für lokale Variablendeklarationen (innerhalb von Methoden).

Desweiteren gibt es noch (unter anderem) die modifier static und final.
static besagt, dass deine Variable eine Klassenvariable ist (und keine Instanzvariable); das heißt, alle Objekte dieser Klasse teilen sich eine Variable. Wenn du static nicht benutzt, hat dann jedes Objekt dieser Klasse seine eigene Variable.
final drückt aus, dass die Variable nach der Initialisierung (direkt oder im Konstruktor) nicht mehr geändert werden kann.
static kann naturgemäß also nur in der Deklaration von Klassenvariablen verwendet werden und nicht innerhalb von Methoden zur Deklaration lokaler Variablen.

Ich nehme an, genau das hast du gemacht.

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Beitrag von guido » 15. Dez 2007 14:16

yourmaninamsterdam hat geschrieben:Ich nehme an, genau das hast du gemacht.
Damit es nicht verloren geht (es steht im Posting weiter "oben" drin): public etc. kann man auch nur für Methoden und Attribute, aber nicht für lokale Variablen angeben!

Code: Alles auswählen

public class X {
  public int c = 0; // OK, da Attribut
  public void doSomething() { // OK, da Methode
    public int lokale = 0; // NICHT OK, da lokale Variable
  }
}
Das Verhalten ist auch logisch: Von "außen" (also außerhalb der geschweiften Klammern einer Klasse) kann ich nur maximal die Attribute und Methoden sehen; Elemente, die sich in Methoden befinden, sind nur dort drinnen sichtbar. Ein "public" auf eine lokale Variable "lokale" in der Methode "doSomething" ist also sinnlos...

Guido

Antworten

Zurück zu „Archiv“