Initialisierung von Attributen

Status
Nicht offen für weitere Antworten.

Matrim

Mitglied
Hallo,

so wie ich es seh, gibt es zwei offensichtliche Arten, Attribute einer Klasse zu initialisieren:
Code:
class MyClass
{
  // Hier in der Deklaration
  private String myString = null;

  // bzw im Konstruktor
  MyClass()
  {
     myString = null;
  }
}

Nun meine Frage, wo sollte man es machen? Spielt es keine Rolle (Rechenzeit...) oder gibt es gar eine Konvention, an die man sich halten sollte?

Danke für einen Hinweis.
 

Illuvatar

Top Contributor
Laut den SUN Coding Conventions nicht:
Code:
class X
{
    String x = "hallo";
}
sondern
Code:
class X
{
    String x;
    public X()
    {
        x = "hallo";
    }
}

Der Unterschied in der Rechenzeit ist, wenn es überhaupt einen gibt, vernachlässigbar gering.
 

Matrim

Mitglied
Alles klar, danke.

Macht auch Sinn, da man nicht alle Deklarationen durchsuchen muss, sondern im Konstruktor schaut.
Mat.
 

thE_29

Top Contributor
man könnte es halt private machen und dann gewisse schreib und lese funktionen implementieren ;)

also setX(String bla)

und getX() return X;
 

Matrim

Mitglied
thE_29 hat gesagt.:
man könnte es halt private machen und dann gewisse schreib und lese funktionen implementieren ;)

also setX(String bla)

und getX() return X;
Es geht hierbei um die Initialisierung der Attribute. Da dies im Konstruktor vonstatten geht, braucht man keine getter/setter Methoden, unabhängig ob private, public oder protected.
 
B

bygones

Gast
1. sollte man alle instanz variablen private machen !

2. Bin ich der Meinung Instanzvariablen sollte im Konstruktor initialisiert werden da das anzeigt dass sie zu einer Instanz gehören... Klassenvariablen sollte daher außerhalb des Konstruktors intialisiert werden !
 

Illuvatar

Top Contributor
deathbyaclown hat gesagt.:
1. sollte man alle instanz variablen private machen !
2. Bin ich der Meinung Instanzvariablen sollte im Konstruktor initialisiert werden da das anzeigt dass sie zu einer Instanz gehören... Klassenvariablen sollte daher außerhalb des Konstruktors intialisiert werden !

1. Ja, ich wollte da oben schnell schreiben :D
2. a) Sag ich doch
b) Würd ja keinen Sinn machen, aber vielleich noch in einem "static initializer"
 

thE_29

Top Contributor
naja, final strings oder sonstiges initialisiere ich gleich vor dem konstruktor, da sie sowieso nie geändert werden ;) so wie man es in C macht mit den #define

sonstige vars, belege ich vielleicht mit einem default wert, aber sonstige init vars werden im konstruktor, aber auch nur zur übersichtbarkeit gemacht, weil man kann eigentlich schon vorher andere (static) funktionen aufrufen und sie eigentlich "vorm" konstruktor setzen lassen. was aber net wirklich schlau oder sinnvoll ist ;)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben