Konstruktor in Java - Java Programmieren Lernen - 15

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ธ.ค. 2024

ความคิดเห็น • 91

  • @JonasKeil
    @JonasKeil  3 ปีที่แล้ว +4

    👇Deine *Unterstützung* macht noch bessere Tutorials möglich: www.patreon.com/user?u=50183366
    📢Als Community Java lernen *(Discord)* : discord.gg/wkWe3FvdSu
    Tutorial-Reihe für Java Beginner: bit.ly/3GKMucx

  • @dennusch
    @dennusch 3 ปีที่แล้ว +90

    Alter ich bin so am struggeln mit Java im Studium und bisher ist alles sehr verständlich von dir erklärt. Danke!

    • @dennusch
      @dennusch 3 ปีที่แล้ว +3

      Kann ich pro Klasse immer nur einen Konstruktor haben?

    • @JonasKeil
      @JonasKeil  3 ปีที่แล้ว +4

      Freut mich sehr dass ich dir helfen kann! Ja du kannst mehrere Konstruktoren verwenden, allerdings müssen sie dann unterschiedliche Argumente haben. Wenn du dir dann ein neues Objekt erstellst wird einfach der Konstruktor genommen, der mit den eingegebenen Parametern übereinstimmt :)

    • @Cpt-_-Ings
      @Cpt-_-Ings 5 หลายเดือนก่อน

      Same, ich glaub das liegt in den Genen von One Piece Fans 🥲

    • @fcos1921
      @fcos1921 16 วันที่ผ่านมา

      @@Cpt-_-Ings was machst du hier du kleine seemann fanboy

    • @Cpt-_-Ings
      @Cpt-_-Ings 16 วันที่ผ่านมา

      @@fcos1921 Seemann ist mein Java Daddy

  • @bbbernier
    @bbbernier ปีที่แล้ว +9

    Ich guck nur zum Spaß und zur Auffrischung alten Wissens und denk mir: Schade, dass ich vor 20 Jahren nicht solche Lernvideos zur Verfügung hatte. Super gut gemacht!

  • @Lucifer11392
    @Lucifer11392 9 หลายเดือนก่อน +4

    Vielen Dank für all deine Videos. Besser als jeder Dozent erklärt.

  • @k13r4
    @k13r4 ปีที่แล้ว +14

    Wow, ich liebe die Art und Weise, wie du Dinge mit einfachen Beispiel so gut auf den Punkt bringen kannst. Finde auch super, dass du immer wieder sagst, was gerade passiert im Programm, und auch wirklich jeden einzelnen Schritt. Außerdem finde ich auch extrem gut, dass du erst einmal die aufwändigeren Wege zeigst, und dann den schnelleren. Daumen hoch! :)

    • @JonasKeil
      @JonasKeil  ปีที่แล้ว

      danke dir Kiera

  • @fathombarki6858
    @fathombarki6858 10 หลายเดือนก่อน

    Jonas, vielen Dank für das Erklären bin die ganze am Kämpfen es zu verstehen aber durch dein Video, ist der Knoten geöffnet. Ich habe genau die gleichen Problem, wie du sie hattest. Ich danke dir für dein Tutorial. EINFACH nur KLASSE.

  • @Swappa0
    @Swappa0 2 ปีที่แล้ว +12

    Ich find deine Videos richtig super und sehr verständlich erklärt. Aber das "Laprador" mit "p" triggert mich einfach hart (ja ich weiss, es hat nix mit dem eigentlichen Thema zu tun, aber sonst gibt es an deinem Video halt einfach nix zum meckern :D ).

  • @HundertsechsCentimeter
    @HundertsechsCentimeter 26 วันที่ผ่านมา

    Du bist absolutes Gold wert, Grüße aus dem 1. Informatik Semester :)

  • @Hannah__23
    @Hannah__23 6 หลายเดือนก่อน

    Vielen Dank für das tolle Video. Deine Art zu erklären ist wirklich super und jetz habe ich endlich die Theorie hinter dem Konstruktor verstanden. Vielen, vielen Dank. Mach weiter so. :)

  • @katume7156
    @katume7156 ปีที่แล้ว +1

    Junge so gut erklärt unfassbar

  • @CertainlyTrying
    @CertainlyTrying 2 ปีที่แล้ว +3

    So gut erklärt, dass ich es gleich beim ersten Mal verstanden habe. Vielen Dank 🙏

  • @verschiedenevideos598
    @verschiedenevideos598 11 หลายเดือนก่อน

    Goolege, ein Tipp für dich, die Empfehlung am Anfang von dir als Voraussetzung vor ein neuen Thema anzufangen war super hilfsreich und zeitsparend. Ich bitte dass du bei alle deine Videos dasselbe machst.

  • @itsyuria
    @itsyuria ปีที่แล้ว

    Danke, für deinen tollen Videos! Endlich habe ich das Gefühl Java richtig zu verstehen :)

  • @Anubis1242
    @Anubis1242 2 ปีที่แล้ว +6

    Endlich kapiert. Wieso kann das kein anderer so gut und einfach erklären ey xD Was nützt ein studium wenn man nichts versteht wenn alles so hochgestochen formuliert ist und man gezwungen ist komische Sätze auswendig zu lernen ._. Großen Dank

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว +2

      Haha freut mich dass ich dir weiterhelfen konnte😁🙌🏻 Was genau studierst du denn? :)

    • @Anubis1242
      @Anubis1242 2 ปีที่แล้ว +2

      @@JonasKeil Wirtschaftsinformatik im Fernstudium. Vielleicht komm ich die Tage mal auf deinem Discord vorbei :)

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว +1

      Ahh verstehe, cool das studiere ich auch gerade😁🙌🏻

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว +1

      Ich freu mich wenn du vorbeischaust :))

  • @markokobiela2927
    @markokobiela2927 3 ปีที่แล้ว +10

    Gutes Video. Ich könnte mir vorstellen das es noch übersichtlicher wird wenn du beide Klassen gleichzeitig zeigen würdest ohne zu switchen.

    • @JonasKeil
      @JonasKeil  3 ปีที่แล้ว +10

      Okay, vielen Dank für den Hinweis, die nächsten Videos sind leider schon vorproduziert, in den darauf folgenden werde ich mir den Tipp aber zu Herzen nehmen👍🏻

  • @хакертч-э6ф
    @хакертч-э6ф 4 หลายเดือนก่อน

    Ich bedanke mich bei dir herzlich ❤

  • @sanhill9409
    @sanhill9409 2 ปีที่แล้ว +3

    Oh mein Gott, vielen Dank, jetzt hab ich es endlich verstanden 😂🙏🙏👌

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว +1

      Hey San, das freut mich sehr! Vielen Dank für den tollen Kommentar!😁🎉

  • @alicehallow4513
    @alicehallow4513 9 หลายเดือนก่อน

    habs jetzt zum ersten Mal endlich verstanden * cry *

  • @kurwanker4936
    @kurwanker4936 9 หลายเดือนก่อน

    Super geiles Video und Dankeschön!

  • @raka3003
    @raka3003 ปีที่แล้ว

    So alt das Video, aber dennoch so geil😂👌

  • @williamgrierson
    @williamgrierson ปีที่แล้ว

    Sehr sehr stark erklärt!

  • @lover.r3ps
    @lover.r3ps หลายเดือนก่อน

    von 10:18 bis 10:50 meintest du/ Sie das der Konstruktor mit der Main classe Hund verbunden ist. ich verstehe aber 2 sachen nicht dadran.
    1: wieso braicht man 2 klassen dafür? ich dachte das der Konstruktor direkt in die delbe Klasse zwichen methoden und Attributen steht?
    2: wie soll ich das in einer Klausur per Hand schreiben? soll ich das einfsch in 1 verschiedene Codes schreiben nebeneinander oder einfach in einen?

  • @alexandrazeh3275
    @alexandrazeh3275 11 หลายเดือนก่อน

    4:14 warum steht da nicht if(kannBellen == true) ?

  • @tabasher
    @tabasher 3 ปีที่แล้ว +1

    DANKE für deine Videos und für die Tolle Playlist :D, ich habe nun eine Frage zu den Konstruktoren: ich benutze Eclipse als IDE und wo ich dein Projekt 1:1 nach gemacht habe (nachdem ich mit meinem gescheitert bin), kommt bei mir in der Main als Meldung: "age cannot be resolved to a
    variable", kannst mir da weiterhelfen? 10:00

    • @JonasKeil
      @JonasKeil  3 ปีที่แล้ว +1

      Hey, vielen Dank für dein Feedback, ich kann mir ungefähr vorstellen wo das Problem liegt aber am Besten ist es, wenn du im Discord ein Screenshot teilst, dann können wir dir am Besten weiterhelfen :)

  • @gulistan2112
    @gulistan2112 ปีที่แล้ว

    Danke. So gut erklärt :)

  • @stabilerj
    @stabilerj 2 ปีที่แล้ว +2

    wirklich sehr sehr gut erklärt, vielen Dank!!!

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว +1

      Ich danke DIR für das Kompliment!😁 Schön dass ich dir helfen konnte :)

    • @stabilerj
      @stabilerj 2 ปีที่แล้ว +1

      @@JonasKeil das Lustige an der Sache ist, dass ich Konstruktoren schon behandelt hatte aber ich nie verstanden habe was es mit dem "this" auf sich hatte. Endlich eine richtige Aufklärung :D

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว +1

      @@stabilerj freut mich so sehr dass ich dir da helfen konnte :). Ich weiß wie weird das am Anfang aussieht und es ist so schön dass du es durch das Video verstehen konntest!!!

  • @YO-xm6hr
    @YO-xm6hr 3 ปีที่แล้ว +3

    Top Videoreihe! Hätte mal eine Frage, wie kann ich jetzt am besten üben? Die Basics sind garkein Problem aber wenn die Aufgaben etwas komplexer werden, habe ich Schwierigkeiten… hast du da einen Tipp?

    • @JonasKeil
      @JonasKeil  3 ปีที่แล้ว

      Also am Besten geht das natürlich, wenn du dich daran versuchst, eigene Programme und Spiele zu entwickeln, weil du dann alles was du gelernt hast in Verbindung bringen musst. Ich habe im Patreon eine ganze Reihe von Ideen für solche Programme gepostet. Ich werde aber auf dem Kanal auch bald zwei Videos zu Spielen in Java hochladen, die die ein besseren Gesamtüberblick geben sollten. Hast du denn Beispiele für komplexe Aufgaben? Dann könnte ich mal ein Video dazu machen, wie man so etwas am Besten lösen kann :)

    • @YO-xm6hr
      @YO-xm6hr 3 ปีที่แล้ว

      @@JonasKeil super, danke dir für die Rückmeldung:)
      Aufgabe ist leider zu lang, konnte es nicht per Kommentar anhängen :/

    • @JonasKeil
      @JonasKeil  3 ปีที่แล้ว

      Bist du im Discord? Dann kannst du es da einfach rein schicken

    • @YO-xm6hr
      @YO-xm6hr 3 ปีที่แล้ว

      @@JonasKeil nein, wo finde ich deinen Discord? Habe ihn leider nicht gefunden

    • @JonasKeil
      @JonasKeil  3 ปีที่แล้ว

      discord.gg/7BhRzhQX

  • @the_kischt8942
    @the_kischt8942 3 ปีที่แล้ว +1

    ein Frage zum Schlusspart: Wir wollen ja mit dem Array ein boolean wert ausgeben, deshalb verwenden wir den counter der uns im Prinzip den Boolean wert als Zahl darstellt, da ansonsten mit dem alleinigen Zugriff nach der For- schleife mit s.o.pln(hunde[i].kannpfotegeben); nur true ausgegeben werden würde oder?

    • @JonasKeil
      @JonasKeil  3 ปีที่แล้ว

      Ganz genau, du hast das Thema auf jeden Fall verstanden👍🏻

  • @lily-ot6ze
    @lily-ot6ze ปีที่แล้ว +1

    Eine Frage. Wird ein Konstruktor immer benötigt? egal was für eine klasse das ist? oder gibt es Ausnahmen, wo ein Konstruktor nicht benötigt wird?

  • @jamiezocktyt
    @jamiezocktyt 3 ปีที่แล้ว +3

    Gutes Video! :)

    • @JonasKeil
      @JonasKeil  3 ปีที่แล้ว +1

      Vielen Dank für dein Feedback. Freut mich sehr wenn es dir gefallen hat! :)

  • @dw76
    @dw76 7 หลายเดือนก่อน

    Hallo Jonas. Vielen Dank für deine Videos. Ich mag die sehr. Frage noch: was hast du eingestellt, dass du diese tollen Schriftfarben hast, dass du z.B. bei "this.alter = alter" erkennst, welches Alter zu welchem gehört? ich hab nur grün für Strings und braun für Schlüsselworte.

  • @Allyspinkyworld
    @Allyspinkyworld 5 หลายเดือนก่อน

    wäre es also korrekt wenn man sagt das Konstruktiven dazu dienen, dass man vereinfacht auf die Starwerte(Attribute zugreifen kann ?

  • @gummibear654
    @gummibear654 2 ปีที่แล้ว +1

    Einen Hinweis zu Arrays von Objekten wäre noch hilfreich gewesen oder ich habe es überhört. Ich war verwirrt beim 11:25 "Hund[] hunde = {...}". Dennoch gut erklärt.

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว

      Hey Bligher, danke für deinen Kommentar! So wie du Arrays von bestimmten Datentypen machen kannst, kannst du auch Arrays aus bestimmten Objekten machen. Ich denke aber auch, dass ich das an der Stelle noch ausführlicher erklären könnte. Ich denke dran, wenn ich dieses Video überarbeite :)

  • @idunnoidunno7189
    @idunnoidunno7189 2 ปีที่แล้ว +2

    Du bist der beste

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว

      Danke für das Feedback!😁🎉

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว

      War alles soweit verständlich? :)

    • @idunnoidunno7189
      @idunnoidunno7189 2 ปีที่แล้ว +1

      @@JonasKeil ja, ich finde dich sogar sehr gut, wie du es erklärst vor allem für Anfänger. Mach weiter so 💪🏿

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว

      @@idunnoidunno7189 mach ich, vielen Dank!😁🎉

  • @Gamuss12345
    @Gamuss12345 ปีที่แล้ว

    Hey Jonas! Danke für die tolle Reihe! Wie printe ich denn ein Objekt? Also zum Beispiel nur einen Hund mit all seinen Attributen.

    • @イタチ-j2q
      @イタチ-j2q 11 หลายเดือนก่อน

      Wenn du dir eine toString-Methode in der Klasse "Hund" erstellt hast kannst du einfach in der main-Methode in der Klasse Main System.out.println() nutzen und in die Klammer den Namen des Objekts das du erstellt hast schreiben schreiben. Also wenn du deinen Hund mops genannt hast schreibst du System.out.println(mops). In der toString()-Methode kannst du die Ausgabe so formatieren wie dus haben willst (Schau am besten mal im Internet zu toString()-Methode wenn du die noch nicht kennst)

  • @StyleTechnique
    @StyleTechnique 2 ปีที่แล้ว +1

    Eine Sache die ich beim Schlüsselwort "this" nicht verstanden habe ist, im Konstruktor kann man das Ganze auch ohne "this" machen. Doch welchen Unterschied macht es wirklich?
    Ich habe zwar einige Artikel gelesen, wo das erklärt wird, aber so wirklich schlau bin ich trotzdem nicht geworden, weil halt folgendes trotzdem zutrifft:
    Laut Artikel dient es zur Vermeidung von Namenskollisionen. Das macht für mich aber irgendwie nicht viel Sinn, weil...
    nehmen wir die Klasse Hund und davon zur Vereinfachung lediglich das Klassenattribut "int alter". Dann kann man im Konstruktor sowohl *_this.alter = alter_* schreiben, als auch *_alter = alter_* wobei das Links vom Gleich-Zeichen befindende _alter_ sich auf das _Klassenattribut_ bezieht und das rechts liegende auf den _formalen Parameter im Methodenkopf des Konstruktors_ . Java kann hier ganz klar zwischen beiden unterscheiden und auch jeder Programmierer sollte das üblicherweise können, weil man weiß dass formale Parameter also Variablen die im Methodenkopf definiert sind nur solange existieren wie die Methode durchlaufen wird in der die Variable definiert bzw übergeben wurde. Sobald man die Methode verlässt verschwindet die Variable alter aus dem Methodenkopf und deren Wert ist - wie bei uns formuliert - in der Klassenvariable alter abgespeichert. Und wenn wir nun mehrere dieser Objekte ohne this so erzeugen würden würde jedes Objekt trotzdem seine eigenen Werte haben. Es sei denn wir übergeben bei Erzeugung keine anderen Werte. Also wo liegt da dann noch der Zweck? Abgesehen das beim Zurückliefern eines Objekts ein bisschen Schreibarbeit gespartwerden kann. Weil "return this;" durchaus kürzer ist als alles andere...
    Hoffe ich konnte mein Verständnisproblem darstellen. Wäre echt dankbar für eine Auflösung dieses Knotens.
    😅

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว +2

      Hey, ich versuch dir mal den Unterschied an einem Beispiel zu erklären. Stell dir die folgender Klasse Hund vor:
      public class Hund {
      int alter;
      String name;
      public Hund(int alter, String name) {
      this.alter = alter;
      this.name = name;
      }
      }
      Der Hund hat zwei Attribute + einen Konstruktor. In der Main Klasse erstellen wir uns ein neues Hund Objekt.
      public class Main {
      public static void main(String[] args) {
      Hund hund = new Hund(12, "Bello");
      System.out.println(hund.alter);
      }
      }
      Die Ausgabe ist 12. Wenn wir jetzt vom Hund Konstruktor das "this" entfernen, dann sieht die Klasse so aus:
      public class Hund {
      int alter;
      String name;
      public Hund(int alter, String name) {
      alter = alter;
      name = name;
      }
      }
      Wenn wir jetzt das Programm starten, dann ist die Ausgabe 0. Das liegt daran, dass hier dem übergebenen Wert alter noch einmal das alter zugewiesen wird. Hier steht also nicht anderes als "12 = 12" und "Bello = Bello".
      "this" brauchst du also, um unterscheiden zu können zwischen dem übergebenem "alter" und dem Attribut der Klasse "alter".
      Hilft dir das Weiter? :) LG Jonas

  • @user-ho9fq7bm7v
    @user-ho9fq7bm7v 21 วันที่ผ่านมา

    Das wichtigste fehlt. Wie wird der Konstruktor der Oberklasse aufgerufen? Wie geschieht die Parameterübergabe dabei?

  • @ottootto8608
    @ottootto8608 2 ปีที่แล้ว +1

    Guten Tag, zunächst danke dir für die wunderschöne Videos. Kannst du bitte mir erklären, was der Unterschied zwischen Attribut mit public und ohne sichtbarkeitsmodifizierer.
    Z.B.;
    Public class Hund {
    String color;
    public String color;
    }
    In den beiden Fällen kann man auf dieses Attribut von anderen Klassen zugreifen.
    Viele Grüße

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว +2

      Hey otto, wenn du vor dein Attribut keinen Sichtbarkeitsmodifizierer setzt, dann ist es standardmäßig auf package-private. Das heißt du kannst dann wirklich nur auf Attribute von Klassen zugreifen, die sich im gleichen Paket befinden :)

    • @ottootto8608
      @ottootto8608 2 ปีที่แล้ว +1

      @@JonasKeil vielen Dank

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว +1

      Gern geschehen :)

  • @ali-ou5ne
    @ali-ou5ne ปีที่แล้ว

    Bester Mann!

  • @stripedtee4572
    @stripedtee4572 11 หลายเดือนก่อน

    heißt es nicht labrador?

  • @LAZIO14
    @LAZIO14 7 วันที่ผ่านมา

    I love germans! Thanks!

  • @ivankonjaretsev8574
    @ivankonjaretsev8574 2 หลายเดือนก่อน +1

    ich bin trotzdem noch zu blöd den Konstruktor zu 100% zu verstehen.

  • @crowlfeel
    @crowlfeel ปีที่แล้ว

    TOP!

  • @WilderCraf
    @WilderCraf 2 ปีที่แล้ว +2

    Ich weiß einfach nicht wie ich mir Java installieren kann bzw. wie ich das Programm dann auch starten kann. Ich benutze noch online Java, aber ein ordentliches Programm könnte das viel besser ersetzen.

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว

      Schau dir mal das Video an zum Thema Java installieren :)

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว

      Hier der Link: th-cam.com/video/la17ZW0SAUY/w-d-xo.html

    • @WilderCraf
      @WilderCraf 2 ปีที่แล้ว +1

      @@JonasKeil Danke :)

    • @JonasKeil
      @JonasKeil  2 ปีที่แล้ว

      @@WilderCraf Gern geschehen :)

  • @stickerguyhex
    @stickerguyhex 5 หลายเดือนก่อน

    thx

  • @MrShinobi1982
    @MrShinobi1982 2 ปีที่แล้ว +1

    Videos sind super. Und Fokus ist auf Java! Aber Objekt in Java sollen ähnlich dem realen Leben sein. Hund laprador existiert so nicht. Du meinst laprador = labrador ;)

  • @mikehog9194
    @mikehog9194 ปีที่แล้ว

    gutes video aber dass du labrador mit p schreibst triggert mein auge schon hart

  • @avu4922
    @avu4922 5 หลายเดือนก่อน

    Hier meine Lösung ^^, InteliJ hat mein for verbessert (laut InteliJ)
    ```
    System.out.println("Wie viele können Pfote geben?");
    int x = 0;
    for (Hund hund : hunde) {
    if (hund.kannPfoteGeben)
    x++;
    }
    System.out.println(x);
    ```

  • @aice336
    @aice336 9 หลายเดือนก่อน

    i refuse to spell labrador with a p .. wth

  • @poppi1
    @poppi1 ปีที่แล้ว

    Warum schreibst nicht gleich rein der Laprador ist 4 Jahre alt….? Das ist das was ich nicht verstehe….ja weil Anfänger bin….mir geht das nicht irgendw.rein 😅

    • @alexandrazeh3275
      @alexandrazeh3275 11 หลายเดือนก่อน

      weil "laprador" ein erstelltes Objekt aus der Klasse Hund ist. In der Klasse Hund wurde festgelegt, was für Attribute die erzeugten Objekte haben dürfen (darunter int alter). Wenn du das laprador-Objekt erstellst dann übergibst du ja in diesem Sinne doch direkt das alter 4 (siehe 9:05). Ich weiß nicht ganz ob ich deine Frage richtig verstehe, aber doch, er schreibt ja gleich rein dass der Labrador 4 Jahre alt ist. Dafür verwendet er ja die Konstruktoren