Klassen Konstruktor

qrzbl2000

Mitglied
Hallo Community!
Ich weiß, dass ein Konstruktor zum instanzieren von Klassen benutzt wird. In einem Konstruktor wird doch der Anfangszustand eines Objektes beschrieben, oder? Kann man diese Beschreibung nicht auch ohne Konstruktor in die Klasse schreiben? Könnte mir das bitte jemand erklären? :)

Ich weiß, es gibt mehrere Threads zu diesem Thema im Java-Forum, allerdings wurde dort nicht meine Frage erklärt (zumindest habe ich die Antwort nirgendwo entdeckt).
 
Zuletzt bearbeitet von einem Moderator:
T

tröööt

Gast
ja ... das wäre dann "static kontext" was man so vermeiden sollte ...

problem ist nur : OHNE konstruktor KEINE instanz ... und das wiederum ist gegen den sinn von OOP
 
T

TryToHelp

Gast
Ich würde das so definieren, ein Konstruktor erstellt eine Objekt der Klasse.
Man kann Variablen auch so schon instanziieren z.B.
Java:
Public class MyClass{
  int zahl=1;
}
Jedoch kann man wenn man es durch den Konstruktor macht, bei der erzeugung Werte übergeben, so kann ich anstelle das defaults auch speziele Versionen direkt instanziieren.

Java:
Public class MyClass{
  int zahl;

  public MyClass(){
    zahl=1;
  }

  public MyClass(int wert){
    zahl=wert;
  }

}

So kann ich entweder auch eine MyClass mit eins erstellen wie im beispiel zuvor, aber auch eine MyClass mit 3.
 
G

gst

Gast
"Variablen instanziieren" ... "Public" ... du solltest selbst noch mal die Schulbank drücken bevor du hier falsche Tipps gibst. Denn ein Konstruktor wird in jedem Fall aufgerufen. Auch wenn es "nur" der Default-Konstruktor ist.
 

qrzbl2000

Mitglied
Sorry, ich weiß, dass ein Standard-Konstruktor aufgerufen wird.

Also ist eine Klasse der Bauplan für ein Objekt und ein Konstruktor spezialisiert ggf. diese Klasse?
 
B

bone2

Gast
Nein, der Konstruktor erzeugt die Instanz der Klasse, also ein Objekt.
Er spezialisiert auch nichts, er kann genutzt werden um schon bei der Erzeugung einige Attribute zu initialisieren. Das kann man aber auch später machen (oder vorher, siehe SlaterB). Man kann auch Logik im Konstruktor ausführen lassen, obwohl das meist nicht die schöne Art ist.
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
die Klasse beschreibt die Struktur, den Aufbau, die vorhanden Attribute mit Namen und Datentyp,

eine zweite Aufgabe ist das Zuweisen von Werten, erstreckt sich über die gesamte Lebenszeit des Objektes,
besonders interessant aber natürlich auch und gerade zu Beginn,

der Konstruktor ist da besonders involviert, kann mit Parametern des Aufrufers arbeiten,
bevor der nicht fertig ist gibt es kein Objekt (für andere)

allerdings können auch direkt in der Klasse Anfangswerte stehen, wenn über (statische) Methoden bestimmt durchaus auch ziemlich komplex,
man kann dies als vereinfachte Schreibweise für einen Standard-Konstruktor sehen, oder als Teil der Klassendefinition

wie diese Arbeiten philosophisch zu benennen sind, und wer da zuständig ist, überlasse ich anderen
 

qrzbl2000

Mitglied
Also kann ich einen selbstdeklarierten Konstruktor immer weglassen?

Und was meinst du in Zeile 7 mit "(für andere)"?

Und könntest du mir ein kleines kommentiertes Beispiel für eine Klasse mit selbstgeschriebenem Konstruktor geben?
 

TKausL

Top Contributor
Also kann ich einen selbstdeklarierten Konstruktor immer weglassen?

Und könntest du mir ein kleines kommentiertes Beispiel für eine Klasse mit selbstgeschriebenem Konstruktor geben?

Das Beispiel hat TryToHelp dir doch bereits gepostet oben.

Ja du kannst den Konstruktor weglassen, der COmpiler wird dann automatisch einen hinzufügen der in etwa so aussieht:

Java:
class X {
  X(){ super(); }
}
 
S

SlaterB

Gast
> Und was meinst du in Zeile 7 mit "(für andere)"?

kein anderer Thread kann gleichzeitig Methoden aufrufen, das Objekt ist noch nicht 'im Umlauf',
der Konstruktor ist wie die Fabrik, die Autos auf die Straße läßt, in der Fabrik ist noch Ruhe,
da muss der Bordcomputer nicht damit rechnen, dass gerade ein Betrunkener mit dem Auto mit 280 über die Autobahn rast

Beispiele finden sich natürlich in jedem Lehrbuch und überall wo über Konstruktoren gesprochen wird,
jedenfalls in allgemein erklärenden Seiten, im Forum direkt wiederholen/ neu schreiben für nur einen Zuhörer ist freilich weniger attraktiv

Suchmaschine 'java constructor example'
->
All About Constructors in Java
usw.
 
B

bone2

Gast
selbstdeklarierten Konstruktor
@TKausL falsch

@TE meinst du den Standardkonstruktor? Den kannst du nicht immer weglassen, sonst gäbe es ihn nicht.
Java erzeugt den für dich nur, wenn es keinen parametisierten Konstruktor gibt. Hast du einen parametisierten Konstruktor und willst auch noch den parameterlosen Anbieten, musst du den explizit hinschreiben.
 

TKausL

Top Contributor
[OT]
Was passiert eigentlich hier:
Java:
class X {
  public static X instance;
  X() {
    X.instance = this;
    throw new Exception();
  }
}

Hier wird die Instanz bereits in einer Variablen gespeichert, wird aber wegen der Exception nicht zuende gebaut?!
[/OT]
 
B

bone2

Gast
Java:
public class Test2 {

    public static void main(String[] args) {
        System.out.println("a " + X.instance);

        try {
            new X();
        }
        catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println("b " + X.instance);
    }


    private static class X {
        public static X instance;

        X() throws Exception {
            X.instance = this;
            throw new Exception();
        }
    }
}
geht irgendwie, nu will ich wissen warum :O
 
S

SlaterB

Gast
natürlich muss es gehen,
viele schreiben ja JFrame (nicht grad empfehlenswert) mit Konstruktor bis zum setVisible(true),
Java Menu Example
falls noch eine Endlosschleife rangehängt wird, ist ja vom main-Thread ausgeführt, kann der Konstruktor ewig laufen

also wenn der Konstruktor drankommt ist das Objekt soweit fertig wie jedes andere,
vielleicht wird noch interessant ob jemand finale Variablen mit Wert null und am Ende des Konstruktors != null abfragen kann ;)

> kein anderer Thread kann gleichzeitig Methoden aufrufen, das Objekt ist noch nicht 'im Umlauf'
von mir ist dazu dann also nicht exakt korrekt, falls ich mir anmaßen kann dass da jemand drauf gehört hätte,
aber der Aufrufer ist blockiert und nur wenn man selber das Objekt rausgibt besteht eine Gefahr
 

qrzbl2000

Mitglied
Danke für die Beiträge! :toll:
Doch Folgendes verstehe ich immer noch nicht: Kann man sich einen selbstgeschriebenen Konstruktor nicht sparen, den Standardkonstruktor zum Erstellen einer Instanz benutzen und Attribute in der Klasse deklarieren??

Ich habe verstanden, dass ein Konstruktor anfangs Initialisierungen bewerkstelligen kann und, dass ein Konstruktor eine Instanz einer Klasse erzeugt.
Doch für den Rest bin ich zu blöd. :(

Statt

Java:
class Beisp {

	Beispa (String eins, String zwei)
	{
		eins = "eins";
		zwei = "zwei";
	}
}

zu schreiben, könnte man doch (meiner Meinung nach)
einfach

[JAVAclass Beisp {

public static void main (String args[])
{
String zwei, eins;

zwei = "zwei";
eins = "eins";
}
}][/code]

schreiben, oder? So habe ich es auch immer gemacht, bevor ich Konstruktoren kennengelernt habe.
Was ist jetzt der Unterschied? ???:L
 
M

Marcinek

Gast
Mist! Das Forum hat auch keine Edit funktion.

Und die hier gestellten Fragen kann man auch dummerweise nicht mal eben selber ausprobieren.

Wenn es etwas gäbe, wo ich Code eingeben kann und dann macht der PC was damit.

---

Und doof, dass die Sachen (bis auf die mit den Exceptions) in keinem Buch dieser Welt beschrieben werden.
 

qrzbl2000

Mitglied
Und doof, dass die Sachen in keinem Buch dieser Welt beschrieben werden. by Marcinek

Meinst du das ironisch?
Ich habe selber ein Buch über Java und andere Programmierpsrachen, allerdings war die Erklärung dort für mich zu irreführend. :D

Mithilfe eines Konstruktors kann man also Instanzvariablen initialisieren und wie ich es jetzt verstanden habe, über die Parameterliste den Variablen Werte zuweisen. Und man kann Konstruktoren überladen, sodass sie in mehreren Situationen verwendet werden können.
Richtig?
 
M

Marcinek

Gast
Ich sage es mal ohne Ironie:

Das steht alles in deinem Buch.

Probiere es aus, einen Konstruktor zu überladen.

---

Soll das Forum dir später dann hier deine Programme kompilieren? :autsch:
 

Landei

Top Contributor
Dein obiges Beispiel funktioniert einfach nicht. eins und zwei müssen Membervariablen sein. Wenn sie wirklich mit konstanten Werten belegt werden können, kannst du das natürlich ohne Konstruktor machen. Wenn du aber eine Klasse wie "Punkt" hast, willst du in der Regel, dass die Koordinaten im Konstruktor übergeben werden können, denn wenn du sie z.B. immer mit 0 initialisieren würdest, müsstest du sie als nächstes sowieso mit den Settern setzen, und du hättest nichts gewonnen. Außerdem willst du manchmal Eigenschaften festlegen, die zwar keinen festen Wert haben, sich aber nach der Konstruktion nicht mehr ändern sollen (etwa die Länge eines mathematischen Vektors). Soweit klar?
 
Zuletzt bearbeitet:

qrzbl2000

Mitglied
Es steht in meinem Buch, du hast Recht. Aber ich habe die Formulierung dort nicht verstanden!
Und nein, das Kompilieren werde ich sogar alleine hinbekommen. :)

Danke für die Beiträge ich denke, ich habe es verstanden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C OOP Parameter vom Konstruktor Java Basics - Anfänger-Themen 1
R Konstruktor mit Datum Java Basics - Anfänger-Themen 17
W Null-Pointer trotz Konstruktor? Java Basics - Anfänger-Themen 9
M Konstruktor-Aufruf im Konstruktor, aber nicht am Anfang? Java Basics - Anfänger-Themen 4
T Schlüsselworte Schlüsselwort this im Konstruktor Java Basics - Anfänger-Themen 3
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
J Konstruktor Java Basics - Anfänger-Themen 18
frager2345 Java Singleton Muster -> Methode für Konstruktor mit Parametern Java Basics - Anfänger-Themen 3
G Welche Attribute kommen in den Konstruktor? Java Basics - Anfänger-Themen 5
M wird der Konstruktor nicht als 1. ausgeführt? Java Basics - Anfänger-Themen 13
G Konstruktor und update Java Basics - Anfänger-Themen 4
K Kopier-Konstruktor Java Basics - Anfänger-Themen 6
S Default Konstruktor Java Basics - Anfänger-Themen 7
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
J Vier gewinnt in Java,Spieler Konstruktor Java Basics - Anfänger-Themen 8
kxrdelis Konstruktor für ein Rechtwinkliges Dreieck Java Basics - Anfänger-Themen 10
Zeppi OOP Bruch kürzen im Konstruktor Java Basics - Anfänger-Themen 2
HorstSchröder Konstruktor mit Initialwert Java Basics - Anfänger-Themen 1
C Konstruktor ab serialisiertem Objekt Java Basics - Anfänger-Themen 4
J Input/Output Konstruktor ergänzen, der zur Datei mit einem Objekt passt Java Basics - Anfänger-Themen 0
InfinityDE Problem mit Datenübergabe an Konstruktor Java Basics - Anfänger-Themen 7
B Konstruktor mit Array als Parameter Java Basics - Anfänger-Themen 3
G Variablen Array Länge über den Konstruktor definieren Java Basics - Anfänger-Themen 4
L Konstruktor für eine Map-Datei/Map-Datei einlesen Java Basics - Anfänger-Themen 5
C Interface und Konstruktor Java Basics - Anfänger-Themen 1
H Generische Konstruktor Java Basics - Anfänger-Themen 12
MiMa Seltsames Verhalten im Konstruktor Java Basics - Anfänger-Themen 6
S Konstruktor passt nicht zum Rest Java Basics - Anfänger-Themen 11
C Unbekannter "Konstruktor"?? Java Basics - Anfänger-Themen 10
W OOP Warenlager mit Array(Konstruktor, Methoden) Java Basics - Anfänger-Themen 39
R Objekt in Konstruktor ist nicht zulässig Java Basics - Anfänger-Themen 5
A Mit einer Methode den Konstruktor aufrufen? Java Basics - Anfänger-Themen 2
B Warum können super() und this() nicht gemeinsam in einem Konstruktor verwendet werden? Java Basics - Anfänger-Themen 7
K Konstruktor für ein Objekt mit Zugriffsmethoden Java Basics - Anfänger-Themen 7
H Unterschied Konstruktor und Klassenname x = new Klassenname; Java Basics - Anfänger-Themen 3
B Klassen Array Parameter im Konstruktor? Java Basics - Anfänger-Themen 4
E Konstruktor mit Methode Java Basics - Anfänger-Themen 7
E ArithmeticException im Konstruktor Java Basics - Anfänger-Themen 4
S Konstruktor, Objekte Java Basics - Anfänger-Themen 4
F Konstruktor richtig implementiert? Frage zu Benutzereingaben... Java Basics - Anfänger-Themen 9
W Typecastin im Konstruktor? Java Basics - Anfänger-Themen 2
A Variablen Variablenwert über Konstruktor ändern Java Basics - Anfänger-Themen 3
F Arrays im Konstruktor Java Basics - Anfänger-Themen 5
C Konstruktor mit und ohne Parameterliste Java Basics - Anfänger-Themen 13
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
E Best Practice Konstruktor mit bestehender Intanz der gleichen Klasse aufrufen Java Basics - Anfänger-Themen 4
E Plausibilitätsprüfung in dem Konstruktor mit Ausnahmebehandlung Java Basics - Anfänger-Themen 8
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 7
A Aufruf von Konstruktor , obwohl 2 Parameter weggelassen werden Java Basics - Anfänger-Themen 0
D Compiler-Fehler Konstruktor von Superklasse übernehmen Java Basics - Anfänger-Themen 1
P Counter im Konstruktor Java Basics - Anfänger-Themen 11
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
I Einträge in den Konstruktor Java Basics - Anfänger-Themen 3
Aprendiendo [JAVA-Syntax] (int... variable) bei einem Konstruktor Java Basics - Anfänger-Themen 8
J Superklassen Konstruktor Verständnisfrage Java Basics - Anfänger-Themen 1
G Int-Array im Konstruktor Parameter Java Basics - Anfänger-Themen 37
T Datentypen Warum mit Konstruktor Objektvariablen initalisieren? Java Basics - Anfänger-Themen 19
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
P Konstruktor. Java Basics - Anfänger-Themen 4
D Best Practice Objekt automatisch im Konstruktor füllen? Java Basics - Anfänger-Themen 9
D Objekt oder Konstruktor Java Basics - Anfänger-Themen 2
F Java default Konstruktor Java Basics - Anfänger-Themen 1
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
T Konstruktor mit Referenzdatentypen Java Basics - Anfänger-Themen 5
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
T setter im Konstruktor einbauen? Java Basics - Anfänger-Themen 8
R ArrayList im Konstruktor. Java Basics - Anfänger-Themen 4
T Konstruktor Probleme Java Basics - Anfänger-Themen 3
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
S Variable, die im Konstruktor gesetzt wird, wird nicht gefunden vom Compiler. Java Basics - Anfänger-Themen 4
C Generic im Konstruktor Java Basics - Anfänger-Themen 1
F Privater Konstruktor und statische Methoden Java Basics - Anfänger-Themen 4
W Konstruktor von FileInputStream nicht gefunden Java Basics - Anfänger-Themen 18
B Methoden Konstruktor im Konstruktor aufrufen Java Basics - Anfänger-Themen 2
N Aufgabe: Pizza Konstruktor mit mehreren beliebigen Durchmesser/Preiskombinationen Java Basics - Anfänger-Themen 8
K arraygröße durch variablen Konstruktor? Java Basics - Anfänger-Themen 7
K ArrayList in Konstruktor - wie späterer Zugriff Java Basics - Anfänger-Themen 2
G Verwendung von Konstruktor Java Basics - Anfänger-Themen 8
X Übergabeparameter Konstruktor (File) Java Basics - Anfänger-Themen 13
K Wieso muss man finale statische Variablen sofort oder eben im Konstruktor initialisieren? Java Basics - Anfänger-Themen 2
C Konstruktor in Abstrakten Klassen Java Basics - Anfänger-Themen 4
B Konstruktor Problem Java Basics - Anfänger-Themen 8
Joew0815 konstruktor und damit erstellte objekte Java Basics - Anfänger-Themen 1
K Hashtable mit eigenen Konstruktor Java Basics - Anfänger-Themen 2
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
H Fehler im Konstruktor abfangen Java Basics - Anfänger-Themen 10
J Konstruktor Problem bei Vererbung Java Basics - Anfänger-Themen 1
I Java Eingabe aus einer anderen Klasse in eine andere an Konstruktor übergeben Java Basics - Anfänger-Themen 4
O Konstruktor und Default Konstruktor Java Basics - Anfänger-Themen 7
S Kapselung Objekt bei Übergabe an Konstruktor nicht initalisiert Java Basics - Anfänger-Themen 3
I Vererbung Frage zum Konstruktor Java Basics - Anfänger-Themen 5
Y Konstruktor - Setter/Getter Java Basics - Anfänger-Themen 3
P Konstruktor Java Basics - Anfänger-Themen 4
E Initialisierung von Attributen und Konstruktor Java Basics - Anfänger-Themen 0
H Compiler-Fehler NullPointerException bei .length, Konstruktor fehlerhaft? Java Basics - Anfänger-Themen 3
M Objekt Array an konstruktor übergeben und Initialisieren Java Basics - Anfänger-Themen 1
llabusch Vererbung Super Konstruktor Java Basics - Anfänger-Themen 5
P Erste Schritte WindowBuilder erstellt Konstruktor wie zugreifen Java Basics - Anfänger-Themen 5
M Parameter von Konstruktor, der Superklassen-Konstruktor aufruft Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben