Konstruktor in Java - Java Programmieren Lernen - 15

Поділитися
Вставка
  • Опубліковано 29 вер 2024

КОМЕНТАРІ • 84

  • @JonasKeil
    @JonasKeil  2 роки тому +2

    👇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 2 роки тому +77

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

    • @dennusch
      @dennusch 2 роки тому +3

      Kann ich pro Klasse immer nur einen Konstruktor haben?

    • @JonasKeil
      @JonasKeil  2 роки тому +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 2 місяці тому

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

  • @хакертч-э6ф
    @хакертч-э6ф Місяць тому

    Ich bedanke mich bei dir herzlich ❤

  • @alicehallow4513
    @alicehallow4513 7 місяців тому

    habs jetzt zum ersten Mal endlich verstanden * cry *

  • @gulistan5897
    @gulistan5897 Рік тому

    Danke. So gut erklärt :)

  • @Swappa0
    @Swappa0 Рік тому +9

    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 ).

  • @k13r4
    @k13r4 Рік тому +12

    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! :)

  • @bbbernier
    @bbbernier 10 місяців тому +7

    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!

  • @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👍🏻

  • @Anubis1242
    @Anubis1242 2 роки тому +5

    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 :))

  • @avu4922
    @avu4922 2 місяці тому

    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);
    ```

  • @dw76
    @dw76 5 місяців тому

    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.

  • @CertainlyTrying
    @CertainlyTrying Рік тому +3

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

  • @Lucifer11392
    @Lucifer11392 7 місяців тому +2

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

  • @Allyspinkyworld
    @Allyspinkyworld 2 місяці тому

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

  • @lily-ot6ze
    @lily-ot6ze 11 місяців тому +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?

  • @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: ua-cam.com/video/la17ZW0SAUY/v-deo.html

    • @WilderCraf
      @WilderCraf 2 роки тому +1

      @@JonasKeil Danke :)

    • @JonasKeil
      @JonasKeil  2 роки тому

      @@WilderCraf Gern geschehen :)

  • @aice336
    @aice336 7 місяців тому

    i refuse to spell labrador with a p .. wth

  • @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!😁🎉

  • @YO-xm6hr
    @YO-xm6hr 2 роки тому +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  2 роки тому

      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 2 роки тому

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

    • @JonasKeil
      @JonasKeil  2 роки тому

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

    • @YO-xm6hr
      @YO-xm6hr 2 роки тому

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

    • @JonasKeil
      @JonasKeil  2 роки тому

      discord.gg/7BhRzhQX

  • @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

  • @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 :)

  • @tabasher
    @tabasher 2 роки тому +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  2 роки тому +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 :)

  • @the_kischt8942
    @the_kischt8942 2 роки тому +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  2 роки тому

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

  • @katume7156
    @katume7156 10 місяців тому +1

    Junge so gut erklärt unfassbar

  • @stickerguyhex
    @stickerguyhex 2 місяці тому

    thx

  • @Hannah__23
    @Hannah__23 3 місяці тому

    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. :)

  • @jamiezocktyt
    @jamiezocktyt 3 роки тому +3

    Gutes Video! :)

    • @JonasKeil
      @JonasKeil  3 роки тому +1

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

  • @stripedtee4572
    @stripedtee4572 8 місяців тому

    heißt es nicht labrador?

  • @verschiedenevideos598
    @verschiedenevideos598 8 місяців тому

    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.

  • @fathombarki6858
    @fathombarki6858 7 місяців тому

    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.

  • @itsyuria
    @itsyuria 10 місяців тому

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

  • @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 :)

  • @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!!!

  • @mikehog9194
    @mikehog9194 Рік тому

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

  • @alexandrazeh3275
    @alexandrazeh3275 9 місяців тому

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

  • @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!😁🎉

  • @kurwanker4936
    @kurwanker4936 6 місяців тому

    Super geiles Video und Dankeschön!

  • @Gamuss12345
    @Gamuss12345 9 місяців тому

    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 8 місяців тому

      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)

  • @raka3003
    @raka3003 10 місяців тому

    So alt das Video, aber dennoch so geil😂👌

  • @crowlfeel
    @crowlfeel Рік тому

    TOP!

  • @williamgrierson
    @williamgrierson 10 місяців тому

    Sehr sehr stark erklärt!

  • @ali-ou5ne
    @ali-ou5ne 9 місяців тому

    Bester Mann!

  • @MrShinobi1982
    @MrShinobi1982 Рік тому +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 ;)

  • @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 9 місяців тому

      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

  • @DerEineFuck
    @DerEineFuck Рік тому

    bro also mein Infolehrer sollt sich ein Beispiel nehmen