Informatiker Board (http://www.informatikerboard.de/board/index.php)
- Themengebiete (http://www.informatikerboard.de/board/board.php?boardid=1)
-- Informatik in der Schule (http://www.informatikerboard.de/board/board.php?boardid=21)
--- Was sind Konstruktoren (http://www.informatikerboard.de/board/thread.php?threadid=1985)


Geschrieben von gg_ am 06.12.2014 um 17:53:

  Was sind Konstruktoren

Meine Frage:
Ich bin gerade in Java eingestiegen und hab nicht verstanden, was Konstruktoren machen. Wozu brauche ich einen Konstruktor, wozu ist das gut? und was macht der default-Konstruktor die man nicht in der Klasse sieht.

Meine Ideen:



Geschrieben von eulerscheZahl am 06.12.2014 um 18:22:

 

Wenn du eine Klasse hast und eine Instanz davon erzeugst, dann rufst du dabei den Konstruktor auf.
Bsp.: JButton button = new JButton();
wenn du dem Button aber beim Erstellen noch einen Text mitgeben willst, dann geht das mit
JButton button = new JButton("klick mich");

Das erste Beispiel verwendet einen Konstruktor, der keine Argumente entgegennimmt. Hier wird letztlich nur der Speicher für das Objekt reserviert, sonst passiert nichts. Dafür gibt es den default Konstruktor.
Im zweiten Beispiel wird noch ein Text übergeben, der dann auf dem Button zu sehen ist. Hier muss man selbst tätig werden und den Konstruktor schreiben.



Geschrieben von gg_ am 06.12.2014 um 18:27:

 

muss man denn unbedingt ein Konstruktor erstellen?



Geschrieben von eulerscheZahl am 06.12.2014 um 18:49:

 

Wenn du Argumente übergeben willst: ja.
Wenn du nur Speicher reservieren willst: nein.
Aber es kann manchmal hilfreich sein:
mit einem Konstruktor, der Argumente entgegennimmt, kann man darauf verzichten, diese noch nach der Erzeugung zuweisen zu müssen.

siehe obiges Beispiel:
mit JButton button = new Button("klick mich");
ersetze ich
JButton button = new JButton();
button.setText("klick mich");



Geschrieben von eulerscheZahl am 09.12.2014 um 16:33:

 

Hallo gg_, du hast mir eine private Nachricht geschickt, aber ich kann dir nicht antworten.
Um das zu ändern, gehe auf Profil -> Einstellungen editieren -> Wollen Sie private Nachrichten empfangen

Da der Inhalt der PN nicht wirklich geheim ist, kopiere ich hierher, was ich per PN nicht abschicken konnte.



es ist schonmal erfreulich, dass es funktioniert.
Was man noch besser machen könnte: du prüfst hier den selben Wert (i%4) auf mehrere Zahlen. Dafür gibt es switch:
code:
1:
2:
3:
4:
5:
6:
switch (i % 4) {
    case 0: john.setPenColor(Color.blue); break;
    case 1: john.setPenColor(Color.black); break;
    case 2: john.setPenColor(Color.red); break;
    case 3: john.setPenColor(Color.green); break;
}

Und die Variablen k und i haben immer den selben Wert. Man könnte also auf k verzichten und stattdessen john.forward(15*i); nehmen.

Zur Frage, wie man eine Programmiersprache am besten lernt:
Literatur: die javainsel ist recht beliebt. Gibt es in Papierform zu kaufen oder kostenlos als Download.
Dann hilft es, sich Aufgaben zu suchen, an denen man Spaß hat. Ich knoble z.B. gerne an mathematischen Rätseln. Auf Project Euler gibt es viele davon. Die Seite ist zwar eher mathematisch orientiert, aber ohne Programmierkenntnisse kommt man dort auch nicht weiter. Gerade die ersten Rätsel sind durchaus etwas für Anfänger. Auch ganz nett, aber eher für Fortgeschrittene: hacker.org

Ach ja: stelle solche Fragen bitte künftig nicht als persönliche Nachricht.
Zum einen kriegst du dann noch Antworten von anderen Nutzern (die hier leider fast nur aus Karlito bestehen, das Forum ist recht ausgestorben), zum anderen hat vielleicht jemand das selbe Problem wie du und landet dann per Suchmaschine bei der Lösung.

PS: hier ist das "Du" üblich Augenzwinkern .



Geschrieben von gg_ am 09.12.2014 um 17:28:

 

Danke smile



Geschrieben von gg_ am 09.12.2014 um 17:34:

 

und Danke für deine Tipps (sind für mich sehr hilfreich)


Forensoftware: Burning Board, entwickelt von WoltLab GmbH