An welcher Stelle Initialisiert man am Besten?
Und gibt es Gründe einen Stil zu bevorzugen und einen anderen nicht zu verwenden? Oder ist es vollkommen egal welchen Stil man verwendet?
Java Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class Init {
int x = 1; // Deklaration
{
x = 2; // Initialisierungblock
}
Init() {
x = 3; // Konstruktor
}
public static void main(String[] args) {
new Init();
}
}
Java Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class Init {
int x = 1; // Deklaration
{
x = 2; // Initialisierungblock
}
Init() {
x = 3; // Konstruktor
}
public static void main(String[] args) {
new Init();
}
}
Java Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
public class Init {
int x = 1; // Deklaration
{
x = 2; // Initialisierungblock
}
Init() {
x = 3; // Konstruktor
}
public static void main(String[] args) {
new Init();
}
}
die Reihenfolge ist:
* Definition
* Initialisierungsblock
* Konstruktor
/*
* Also ich verwende immer ersteres, weil:
* 1. ich mir angewöhnt habe, Attribute immer, wenn möglich, zu initalisieren.
* 2. ich Attribute, wenn möglich, final mache.
*
* jaja und mein Prof. sagt immer Attribute final zu machen ist en guter Programmierstiel xD
*/ public class Test
{
final Ober o1 = null;
final Ober o2 = new Ober(); // schön
{
o1 = new Ober(); // Error, da o1 final ist und initialisiert wurde.
}
Test()
{
o1 = new Ober(); // Error, da o1 final ist und initialisiert wurde.
}
/*
* Also ich verwende immer ersteres, weil:
* 1. ich mir angewöhnt habe, Attribute immer, wenn möglich, zu initalisieren.
* 2. ich Attribute, wenn möglich, final mache.
*
* jaja und mein Prof. sagt immer Attribute final zu machen ist en guter Programmierstiel xD
*/ public class Test
{
final Ober o1 = null;
final Ober o2 = new Ober(); // schön
{
o1 = new Ober(); // Error, da o1 final ist und initialisiert wurde.
}
Test()
{
o1 = new Ober(); // Error, da o1 final ist und initialisiert wurde.
}
/*
* Also ich verwende immer ersteres, weil:
* 1. ich mir angewöhnt habe, Attribute immer, wenn möglich, zu initalisieren.
* 2. ich Attribute, wenn möglich, final mache.
*
* jaja und mein Prof. sagt immer Attribute final zu machen ist en guter Programmierstiel xD
*/ public class Test
{
final Ober o1 = null;
final Ober o2 = new Ober(); // schön
{
o1 = new Ober(); // Error, da o1 final ist und initialisiert wurde.
}
Test()
{
o1 = new Ober(); // Error, da o1 final ist und initialisiert wurde.
}
public static void main(String[] args)
{
}
}
class Ober{}
Zuletzt bearbeitet von Gugelmoser am 14:39:29 19.02.2010, insgesamt 2-mal bearbeitet
Ich versuche Objekte erst so spät wie möglich zu erzeugen - also im entsprechenden Konstruktor. Sehe es bei Konstanten wie Dweb - ist afaik allerdings auch nicht anders möglich.
Damit kein doppelter Source in verschiedenen Konstruktoren vorkommt, pack ichs in den Initialisierungsblock. Kann man dann Theoretisch auch in die Deklaration packen, wenn es dann ohnehin jedesmal ausgeführt wird, wenn eine Instanz erzeugt wird. Allerdings kann man in Initialisierungsblöcken auch komplexere Initialisierungen vornehmen als eine Zuweisung eines neuen Objekts - z.B. Arrays
Nächstes Thema anzeigen Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums
für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de
Werbekostenerstattung verdient werden kann.
Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de
enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt
(vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in
privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden.
Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere
übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.