Initialisierung nur bei Deklarierung?

SMoeller

Mitglied
Hallo,

hab da ein eigentlich recht simples Problem. Ich habe ne kleine Klasse geschrieben.
Code:
import java.util.*;
public class Produktionsauftrag 
{
	//Attribute
	Random r = new Random();
	private int AuftragsNummer=0;
	private int Prioritaet = 0;
	
	Prioritaet = 1;
	//Methoden:
	public Produktionsauftrag (int nummer)
	{
		AuftragsNummer=nummer;
		Prioritaet = Math.abs(r.nextInt())%10;
	}
	public int getPrioritaet(){
	return Prioritaet;
	}
	public int getAuftragsNummer(){
	return AuftragsNummer;}
}

Warum kann ich Prioritaet nach der Initialisierung keinen Wert mehr zuweisen ohne die Hilfe einer Methode keinen Wert mehr zuweisen? Geht das nur innerhalb einer Methode?
 
"Prioritaet = 1;" ist hier völlig falsch platziert. Schreibe es im Konstruktor.
Ein Java-Programm besteht ja aus nicht viel mehr als Methodenaufrufen und Variablenzuweißungen.
 
Kurze Antwort: Geht nur in einer Methode
Weitere Kritik: Variablennamen schreibt man klein
 
Warum kann ich Prioritaet nach der Initialisierung keinen Wert mehr zuweisen ohne die Hilfe einer Methode keinen Wert mehr zuweisen? Geht das nur innerhalb einer Methode?
Da die Variable mit private deklariert wurde, ist sie nur innerhalb der Klasse sichtbar.
Wäre sie mit public ausgezeichnet, könnte der Wert von überall verändert werden (bei protected innerhalb des packages). Dies wird in Java allerdings als schlechter Stil gesehen. Solche Werte sollten immer mit passenden Methoden (Setter) verändert werden, die sich evtl. noch um andere Belange der Variablen kümmern kann. Auf jeden Fall ist durch eine Methode der Umgang mit dieser Variable in der Verantwortung der Klasse wo sie deklariert ist und dies ist erwünscht.
 
Da die Variable mit private deklariert wurde, ist sie nur innerhalb der Klasse sichtbar.

Stimmt, hat aber nichts mit der Frage zu tun.

Wäre sie mit public ausgezeichnet, könnte der Wert von überall verändert werden

Stimmt auch - aber nur auf eine bestimmte Weise. Sie kann zwar von überall verändert werden, wo auch ein Objekt der zugehörigen Klasse definiert ist, aber deshalb kann man sie trotzdem nicht außerhalb von Methoden setzen (was der Threadsteller aber wissen wollte).

(bei protected innerhalb des packages).

Ohne Sichtbarkeitsmodifizierer = innerhalb eines Packages. Protected heißt innerhalb eines Packages UND in allen Klassen, die von dieser Klasse erben.

Sorry für die Klugerei, aber ich möchte den Threadsteller nicht druch ungenaue Ausdrucksweise irritieren ;) .
 
Stimmt, hat aber nichts mit der Frage zu tun.

Hat nicht nur was mit der Frage zu tun, sondern ist sogar die einzig richtige Antwort, da durch das deklarieren als private die Variable nur noch durhc eine Methode der Klasse verändert werden kann.

Der Rest Deines Posts ist also vollkommen irrelevant und verwirrt mehr, als das er hilft.
 
Code-Ausschnitt vom Threadsteller:
Code:
	private int Prioritaet = 0;
	
	Prioritaet = 1;

Da weißt er der Variablen "Priorität" außerhalb einer Methoden einen neuen Wert zu. Das meint er und nichts anderes (meiner Meinung nach). Weil das führt zum Compiler-Fehler und nichts anderes.

Es als irrelevant zu bezeichnen, dass laut Aussage meines Vorposters protected nur im package sichtbar ist ... naja ...
 
Zurück