Konstruktor - was ist das genau?

... komplette Frage anzeigen

4 Antworten

Den Konstruktor erkennst du, wie andere auch schon erwähnt haben daran das er kein Datentyp erhält und gleich heißt wie die Klasse. 

Ein Konstruktor unterscheidet sich in so fern von einer normalen Methode dass Sie nicht aufgerufen werden kann. Sie wird nämlich automatisch aufgerufen wenn man eine Instanz einer Klasse erstellt. Jede Klasse von denen man eine Instanz erstellen kann hat auch einen Konstruktor. Der Konstruktor kann wie "normale" Methoden auch Argumente annehmen. Diese sind zu gebrauchen um die Instanz genauer zu definieren als nur "eine Instanz der Klasse X".

Zum Beispiel will ich ein Ball mit der größe 10 erstellen. Die Klasse "Ball" gibt es schon. Dann würde man so einen Ball erstellen:

Ball neuerBall = new Ball(10);

Die 10 die ich dabei übergeben habe wird direkt an den Konstruktor weitergegeben damit dieser die Instanz "neuerBall" auf meine Größe 10 einstellt. Vielleicht hat die Klasse "Ball" ein Attribut was besagt ob es ein großer Ball ist oder ein Kleiner. So würde der Konstruktor ca. so aussehen:

public Ball(int größe){
       if(größe > 5){
              istEinGroßerBall = true;
      }else{
              istEinGroßerBall = false;
       }
}

So kannst du immer abfragen ob "neuerBall.istEinGroßerBall" true ist um zu erkennen ob es sich um einen großen Ball handelt oder ein kleinen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ANDROUDT
06.09.2016, 21:08

Vielen vielen Dank - jetzt habe ich es verstanden. 

1

Ein Konstruktor ist im Grunde eine normale Methode, die aber automatisch beim Instanziieren der Klasse ausgeführt wird. Eine einfache Methode musst du per Hand aufrufen - ein Konstruktor wird quasi während des "new XYZ()"-Statements ausgeführt.

Darin kann man ganz einfach ein paar Dinge erledigen, welche eine Art Vorbedingung vor dem Benutzen der Klasse sind. Datenbankverbindungen aufbauen, verschiedene Variablen vorbelegen, ... - eben die Dinge erledigen, die man vor dem benutzen jeder public-Methode der Klasse sowieso tun müsste.

Das ist übrigens nicht von der Programmiersprache C# abhängig - sondern Gang und Gebe in quasi jeder objektorientierten Programmiersprache.

Wie hier schon geschrieben wurde: den Konstruktor erkennst du daran,
dass er eine public-Methode ist, welche exakt wie der Klassenname
lautet.

Antwort bewerten Vielen Dank für Deine Bewertung

Man kann Objekte auch mittels Methoden initialisieren, aber Konstruktoren sind bequemer, weil sie beim Erzeugen einer Instanz automatisch aufgerufen werden.

Für gewöhnlich werden im Konstruktor Klassenvariablen instanziiert, Speicher reserviert und Variablen vorbelegt. 
Im Destruktor wird dann aufgeräumt und der ganze, reservierte Kram wieder freigegeben.

Antwort bewerten Vielen Dank für Deine Bewertung

ich glaube die Seite erklärts besser als ich es kann ;)

http://www.codefieber.de/programmierung-1/constructor-in-c-was-ist-das-3076

z.B du möchtest ein Spiel programmieren, dann gibt es einen Kämpfer bzw. die Klasse

public class Fighter{ 
int angriff;

 public Fighter(){
   //erzeugt einen Kämpfer ohne irgendwas
   // angriff wird = 0 sein
 }

 public Fighter(int a){
   angriff = a;
   // dieser kömpfer hat dann angriff = a;
 }
}

erkennen tut man ihn daran dass er gleich wie die Klasse heißt

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von ANDROUDT
06.09.2016, 21:09

Danke - das Beispiel hat sehr geholfen. 

0

Was möchtest Du wissen?