Konstrukter verstehen

Dieses Thema im Forum "Programmierung" wurde erstellt von HappyMajor, 10. Oktober 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. HappyMajor
    Offline

    HappyMajor

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    21
    Hey Leute
    Ich lerne seit 2 Tagen Java und habe glaube ich ein kleines Verständnis Problem was die Konstrukter angeht.
    Ich lerne mit den Buch "jetzt lerne ich Java 7" und wollte euch fragen ob ich das richtig verstanden habe.
    Denn wenn ich versuche so ein Konstrukter mit Instanzen selber zu schreiben,hakt es manchmal irgendwie noch.
    Weil ich manche Sachen noch nicht ganz nachvollziehen kann.
    Hier ein Beispiel:
    Code (Text):
    1. class Mitarbeiter {                       // Also hier ist normal eine Klasse erstellt worden und ein paar Variablen/Felder
    2.   String m_name;
    3.   String m_vorname;
    4.   int m_gehalt;
    5.  
    6.   Mitarbeiter(String name, String vorname, int gehalt) {          // Das ist der Konstrukter,die Variablen in den Parametern sind dazu da,um
    7.    m_name = name;                                                         // mit anderen Methoden zsm zu arbeiten oder? So das andere Methoden
    8.    m_vorname = vorname;                                                // darauf zugreifen können richtig?
    9.    m_gehalt = gehalt;                                                      // Aber warum müssen genau hier die Variablen initialisiert werden?
    10.   }                                                                               // Hätte man das nicht schon oben machen können?
    11.  
    12.  
    13.   void datenAusgeben() {                                                // Hier mit werden die Daten dann später ausgegeben
    14.     System.out.println("\n");                                            
    15.     System.out.println(" Name   : " + m_name);
    16.     System.out.println(" Vorname: " + m_vorname);
    17.     System.out.println(" Gehalt : " + m_gehalt + " Euro");
    18.   }
    19.   void gehaltErhoehen(int erhoehung) {                        // Hiermit soll später das Gehalt erhöt werden
    20.     m_gehalt += erhoehung;
    21.   }
    22. }
    23.  
    24.  
    25. public class MitarbeiterBeispiel {                            
    26.   public static void main(String[] args) {
    27.  
    28.     Mitarbeiter billy = new Mitarbeiter("Gates","Bill",3000);          // Hier werden neue Instanzen erstellt mit den 3 Parametern die der
    29.     Mitarbeiter stevie = new Mitarbeiter("Jobs","Steve",3500);    // Konstrukter benötigt,die schliesslich ausgegeben werden oder?
    30.                                                                                            // Aber wieso eig z.b Mitarbeiter billy wieso nicht: String billy = ...... ?
    31.     billy.datenAusgeben();                                                      //  Denn Variablen deklariert man doch mit einen bestimmten Speichertyp? z.b String
    32.     stevie.datenAusgeben();                                                  // Und wozu wird stevie.datenAusgeben(); Benutzt? Hat doch gerade gar keine BEdeutung oder?
    33.  
    34.     billy.gehaltErhoehen(500);
    35.  
    36.     billy.datenAusgeben();
    37.     stevie.datenAusgeben();
    38.   }
    39. }
    40.  
    41.  
    So das waren erstmal meine Fragen hoffentlich könnt ihr sie beantworten.

    EDIT : WIeso macht der Editor hier einfach neue Zeilen obwohl ich dort gar keine neue Zeile gemacht habe?
    Wie mach ich das denn hier,das alles so da steht wie ich es geschrieben habe?
     
    #1
  2. Cabraca
    Offline

    Cabraca

    benutz bitte code tags
     
    #2
  3. HappyMajor
    Offline

    HappyMajor

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    21
    Hab ich jetzt gemacht.
    Danke für die Info! :D
     
    #3
  4. viebi
    Offline

    viebi

    Registriert seit:
    8. Oktober 2012
    Beiträge:
    6
    Hey,

    ich weiss nicht ob das Beispiel von dir geschrieben wurde odernicht, glaube aber eher nicht. Ein Konstruktor ist dazu da um die (Grundvaribalen) zuzuweisen bzw ihnen einen Wert zu geben --> initialisieren. Das ganze kann man auch aus dem Namen herleiten, es bedeutet soviel wie Erbauer oder Aufbauer. Sobald man einen class aufruft, in deinem Fall die Mitarbeiter class weisst man ihm die zugehörigen Werte zu:

    Mitarbeiter a = new Mitarbeiter("Hans", "Wurst", 10000);

    Der Konstruktor hat wiegesagt die Hauptaufgabe Variablen zuzuweisen und (glaube ich) Funktionen aufzurufen. Man hat zusätlich die Möglichkeit die höher stehende Class zu initialisieren, doch das führt zu weit, das lernst im Bereich Vererbung kennen ;)

    Ich weiss nicht genau ob dir das hilft, falls du weitere Fragen hast, gerne

    MfG Lukas
     
    #4
  5. HappyMajor
    Offline

    HappyMajor

    Registriert seit:
    6. Oktober 2012
    Beiträge:
    21
    Ich hab gerade den Code feihand ohne nach zu lesen selber geschrieben und das ging eig sehr gut! :D
    Natürlich mit anderen Variablen und Namen. Ich hatte einen Fehler,nämlich ein Semikolon falsch gesetzt :p

    Also ist der Konstruktor dafür da Standart Variablen zuzuweisen oder?
    Z.b Geschlecht,Name usw.

    Bloss ich wusste nicht genau WARUM ich die Variablen im Konstruktor initialisieren muss.Ich hätte das doch auch
    oben machen können?

    Ich will nämlich alles bis ins kleinste Detail wissen,denn wenn ich später dann so einen Code schreibe und eig nicht komplett
    verstehe wie der funktioniert bringt mir das nichts^^
     
    #5
  6. viebi
    Offline

    viebi

    Registriert seit:
    8. Oktober 2012
    Beiträge:
    6
    klar, kannst du es auch oben direkt machen, nur dann bringt dir eine eigene Klasse für etwas wenig. Klassen sind oft dazu da, um etwas zu verallgemeinern und diese öfeter zu benutzen, gehen wir mal davon aus, du brauchst zwei Mitarbeiter. Dann könntest du zwei Klassen erstellen Mitarbeiter A, alles oben direkt initialisieren und eine Klasse für Mitarbeiter B. Erstellst du eine allgemeine Klasse, brauchst du nur der Klassen die Eigenschaften/Varibalen zuzuweisen und fertig. Und das ganze musst du dir im Grossen Maß vorstellen, wo es nicht nur zwei Mitarbeiter gibt, sonder tausend ;)

    MfG
     
    #6
Status des Themas:
Es sind keine weiteren Antworten möglich.