Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

KOnstruktor Java
Gehe zu Seite 1, 2  Weiter
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> KOnstruktor Java
 
Autor Nachricht
stephan23
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 02.03.2006
Beiträge: 153

BeitragVerfasst am: 09 Mai 2007 - 12:36:45    Titel: KOnstruktor Java

Ich programmier gerade ein bischen mit Java rum und verstehe nicht ganz den Sinn eines Konstruktors. Kann mir das jemand mit einem Beispiel erklären. Ich verstehe wie man Objekte einer Klasse bildet. Aber nicht ganz wofür ich den Konstruktor geschweige denn die Parameter im Konstruktor benötige. Vielen Dank für die Antworten.
mr.moustache
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 16.04.2007
Beiträge: 298

BeitragVerfasst am: 09 Mai 2007 - 13:11:29    Titel:

Naja wenn du ein Objekt erzeugst(referenzierst), dann haben sämtliche Attribute des Objekts noch "keine" Werte(0).

Der Konstruktor wird beim Erzeugen des Objekts aufgerufen.
In ihm kannst du schon mal einige Werte standardmäßig vergeben, was dir später Arbeit abnehmen kann.

z.B. könntest du eine Klasse Auto schreiben, worin das Attribut Farbe definiert ist. Wenn du nun standardmäßig alle Autos rot haben willst, könntest du einen Konstruktor schreiben:

Me.Farbe = "rot";

Dann werden alle Autos sofort rot erzeugt.
-=rand=-
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.03.2005
Beiträge: 961

BeitragVerfasst am: 09 Mai 2007 - 13:11:59    Titel:

Der Konstruktor erzeugt, wie schon schon erkannt hast, neue Objekte einer Klasse. Falls keine Parameter übergeben werden, handelt es sich um einen Default Konstruktor.

Die Parameter die du übergibst, sind dafür da um Attribute der Klasse beim Erzeugen eines neuen Objekts zu initialisieren.
stephan23
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 02.03.2006
Beiträge: 153

BeitragVerfasst am: 09 Mai 2007 - 14:04:26    Titel: KOnstruktor Java

Ich habe mir ma eine kurze Klasse geschrieben : also ist das der Konstruktor ----> Konstruktor k=new Konstruktor(); und es wird ein Objekt k erzeugt. Was könnte ich jetzt zum Beispiel als Parameter festlegen das versteh ich noch nicht ganz.

import java.io.*;
public class Konstruktor {

String farbe;

public static void main(String[]args){
Konstruktor k=new Konstruktor();
k.farbe="rot";
System.out.println("Mein Objekt k ist "+k.farbe);
}
}
mr.moustache
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 16.04.2007
Beiträge: 298

BeitragVerfasst am: 09 Mai 2007 - 14:26:47    Titel:

Bin kein Java Experte, aber das müsste so aussehen:

public class Konstruktor {
string farbe;

Konstruktor(string f){ // hier definierst du Parameter und die Zuweisungen
this.farbe = f;
}

public static void main(String[]args){

//Auruf mit Parameterübergabe
Konstruktor k=new Konstruktor("rot");

System.out.println("Mein Objekt k ist "+k.farbe);
}
}
sarc
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 21.09.2006
Beiträge: 2659

BeitragVerfasst am: 09 Mai 2007 - 23:10:25    Titel:

Also... Wenn schon Beispiele, dann doch bitte welche, die auch hilfreich sind und keine solchen, die einem zeigen, wie mans nicht macht...

Denn von Sachen, wie mans nicht macht, sind bei stephan schon drei drin:

1. Man importiert nix, das man nicht später noch braucht.
2. Attribute sind grundsätzlich und immer private oder protected.
3. Man gibt Klassen vernünftige Namen.


Aber gut, ich hoffe, das mein Beitrag jetzt hilfreicher wird... Du weißt ja schon, was Objekte sind, wofür man sie brauchen kann und dass man sie erzeugen muss. Nehmen wir die Standardbeispielklasse Kreis:

public class Kreis {

private float radius;

public float getRadius() {
return radius;
}

}

Man sieht, man hat einen Kreis, der einen Radius besitzt. Wenn du jetzt einen neuen Kreis haben willst, dann kannst du den mit

Kreis k = new Kreis();

erstellen. Im Übrigen ist das da oben jetzt noch kein Konstruktor, sondern nur eine Anwendung des new-Operators. Was tut der new-Operator? Er ruft den Konstruktor der Klasse Kreis auf. Da diese offensichtlich keinen hat, wird der sogenannte Default-Konstruktor aufgerufen, der immer dann angelegt wird, wenn keiner selbst definiert worden ist. Der Konstruktor sorgt dafür, dass ein neu erstelltes Objekt richtig initialisiert wird. Der Defaultkonstruktor tut dafür... Überhaupt nichts.
Nun kannst du dir eigene Konstruktoren definieren. Diese sehen an und für sich wie normale Methoden aus, mit zwei Unterschieden: Sie haben keinen Rückgabewert und der Name muss dem Name der Klasse entsprechen. Ansonsten können sie alles, was normale Methoden auch kiönnen.
Wenn der Kreis einen vom Benutzer definierbaren Radius haben soll, dann schreibst du also

public Kreis(float r) {
radius = r;
}

Jetzt kannst du einen neuen Kreis samt Radius mittels

Kreis k = new Kreis(5,22);

erstellen. Das alte new Kreis() geht nicht mehr, weil es nun keinen Default-Konstruktor mehr gibt.
Man sieht also: Der new-Operator ruft immer genau den Konstruktor auf, zu dem die übergebenen Parameter passen - wie beim normalen Überladen von Methoden auch.
Kossy
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 09.12.2005
Beiträge: 306

BeitragVerfasst am: 10 Mai 2007 - 11:16:21    Titel:

Ich habe auch eine Frage:

Angenommen ich habe ein Objekt "Auto" mit den Attributen "Hersteller", "Fahrzeugmodell", "Fahrzeugtyp" und "Preis" . Ist es notwendig mit dem Konstruktor bei der Erzeugung des Objektes Auto jedes der Attribute mit einem Startwert zu versorgen oder konnte man statt der 4 Attribute auch einfach 3 oder 2 Attribute mit Startwerten versorgen?

Danke euch !
mr.moustache
Full Member
Benutzer-Profile anzeigen
Full Member


Anmeldungsdatum: 16.04.2007
Beiträge: 298

BeitragVerfasst am: 10 Mai 2007 - 12:43:46    Titel:

sarc hat folgendes geschrieben:

1. Man importiert nix, das man nicht später noch braucht.


Vielleicht brauchte er es später im Programm ja noch. Es könnte ja nur ein Ausschnitt des Codes sein.

sarc hat folgendes geschrieben:

2. Attribute sind grundsätzlich und immer private oder protected.


Sind wir hier in der Kirche, oder woher diese dogmatische Predigt.
Abgesehen davon, dass es für die funktionsweise eines Konstruktors völlig unerheblich ist.

sarc hat folgendes geschrieben:

3. Man gibt Klassen vernünftige Namen.


Ich finde "Kreis" unvernünftig.


@Kossy

Ich denke es spricht nichts dagegen nur 3 von 5 Attributen zu belegen.
Probier's doch aus.
lane17
Newbie
Benutzer-Profile anzeigen
Newbie


Anmeldungsdatum: 06.11.2008
Beiträge: 1

BeitragVerfasst am: 06 Nov 2008 - 02:12:49    Titel:

I habe auch probleme die Konstruktoren zu verstehen. Warum steht hier ein Konstruktor, was ist seine Rolle hier?

abstract class Person {

protected String name;
protected String nationalitaet;

public Person() {

}
public void setName(String name) {
this.name=name;
}
public String getName(){
return this.name;
}
public void setNationallitaet(String nationalitaet){
this.nationalitaet=nationalitaet;
}
public String getNationalitaet(){
return this.nationalitaet;
}
}
Danke fuer die Antwort
mfG
Jockelx
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 24.06.2005
Beiträge: 3372

BeitragVerfasst am: 06 Nov 2008 - 03:14:42    Titel:

Weiss nicht - macht keinen Sinn.
Kontruktoren können zwar durchaus in abstrakten Klassen stehen und
in den abgeleiteten Klassen aufgerufen werden, aber hier macht dein
Konstruktor ja nix und ist daher überflüssig.
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> KOnstruktor Java
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum