Konstruktoraufruf mit this

Status
Nicht offen für weitere Antworten.
G

gloggy

Gast
Hallo hätte mal eine Frage zu folgendem von mir geschriebener Klasse:

1.Variante:

Code:
public class Wuerfel
{
    private static int augenzahl;
    private static Random zufallsgenerator;
    public Wuerfel()
    {
        new Wuerfel(6);
    }
    public Wuerfel(int zahl)
    { 
        augenzahl = zahl;
        zufallsgenerator = new Random();
    }
2.Variante:
Code:
public class Wuerfel
{
    private  int augenzahl;
    private Random zufallsgenerator;
    public Wuerfel()
    {
        this(6);
    }
    public Wuerfel(int zahl)
    { 
        augenzahl = zahl;
        zufallsgenerator = new Random();
    }
Die Importanweisungen usw. habe ich weggelassen, nun zu meiner Frage:
Warum müssen bei Variante 1 die Datenfelder mit static deklariert werden und bei Variante 2 nicht? Verstehe ich leider nicht so ganz :-(

Vielen Dank für die Hilfe!!!!
 
B

Beni

Gast
Weil "new Wuerfel" und "this" überhaupt nicht dasselbe machen.

Beim ersten Fall erstellt der Konstruktor von Wuerfel ein neues Wuerfel-Objekt. Dieses Objekt ist total unabhängig vom ersten Wuerfel, aber mit "static" wird gesagt, dass alle Wuerfel-Objekte dieselben Variablen haben (viel Spass... alle Wuerfel werden stets dasselbe anzeigen...).

Beim zweiten Fall ruft der Konstruktor von Wuerfel den zweiten Konstruktor desselben Objektes auf.
 

Leroy42

Top Contributor
Kleine Erweiterung zu Beni's Aussage:
Beni hat gesagt.:
Beim ersten Fall erstellt der Konstruktor von Wuerfel ein neues Wuerfel-Objekt.
das nicht weiter benutzt wird und dadurch sofort wieder verschwindet (dem Garbage-Collector
zum Entfernen zur Verfügung steht).
 

Sky

Top Contributor
@Leroy42:
Kleiner Wiederspruch: "sofort wieder verschwindet" und "dem Garbage-Collector zum Entfernen zur Verfügung steht":

zweites ist richtig: der GC räumt dann auf, wenn er Lust hat ;-)
 
G

Guest

Gast
Oki, vielen Dank habe den Unterschied begriffen...

Nochmals Danke an alle Helfer :lol:
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben