Konstruktor in Java - Java Programmieren Lernen - 15 Jonas Keil https://www.youtube.com/watch?v=cD_u6A5S9Xk Transkript (automatisch erstellt) 0:00 du möchtest schlüssig und ohne probleme jahre programmieren lernen herzlich willkommen dann bist du auf diesem kanal genau richtig im letzten video haben wir 0:09 uns mit klassen deren objekten und genauer gesagt mit dem methoden teil von objekten beschäftigt und im heutigen video soll es um den attribut teil von 0:19 klassen beziehungsweise von objekten gehen dabei möchte ich dir ein konzept vorstellen dass für den anfang vielleicht ein wenig schwer zu verstehen 0:26 ist aber von grundlegender bedeutung ist dass er werde ich da in diesem video genau darauf eingehen dieses konzept nennt sich konstrukt uhr starten wir 0:34 also in dem ich das hier einmal löcher wir nennen unsere hunde objekt jetzt einfach labrador und heute wollen wir uns mit dem attribut teil von projekten 0:43 beschäftigen bis jetzt haben wir diese attribute nur deklariert aber noch nicht initialisiert das heißt wir haben ihn noch keinen 0:49 bestimmten wert zugewiesen und fragst du dich ja okay wenn wir hier unsere variablen deklariert haben warum können wir nicht einfach werden können hier zum 0:58 beispiel schreiben und alters gleich vier oder in tat ist gleich mops was weiß ich nicht was das problem hierbei ist wenn du dir das video zur theorie 1:07 hinter objektorientierung an geschaut hast dass jedes objekt einer klasse erst durch ihre attribute einzigartig wird und wenn wir den attributen in der 1:17 klasse schon werte zu weisen dann hat jedes objekt dieser klasse diese werte und die objekte sind in dem sinne nicht mehr einzigartig deshalb 1:24 müssen wir einen anderen weg finden jedem objekt unterschiedliche werte zuweisen zu gehört ein einfacher aber unglaublich effizienter weg wer ist wenn 1:32 wir zum beispiel schreiben würden labrador punkt alter und dann diesem alter dem wert zu weisen jetzt zum beispiel vier und wir dann schreiben 1:39 labrador punkte bis gleich labrador labrador punkt fellfarbe ist gleich schwarz und kann foto geben ist gleich nun haben wir uns 1:51 ein labrador objekt erstellt das einzigartige werte hat wir könnten uns jetzt noch 100 erstellen dass wir dann zum beispiel dackel nennen und den ganz 1:59 andere werte als dem von dem labrador zu weisen dadurch haben wir einzigartige objekte geschaffen also ist also auf jeden fall 2:05 das problem ist so siehst schon um ein objekt zu erstellen haben wir hier fünf zeilen code gebraucht und das schreibt sich nicht schön es ist sehr aufwendig 2:13 und macht auf dauer einfach keinen spaß deshalb stelle ich dir jetzt ein konzept vor besonders ich habe mich damit am anfang unglaublich schwer getan das 2:20 nennt sich konstrukteur und im konstrukt ohren zu verstehen müssen wir als erstes ein thema verstehen dass ich im letzten video schon kurz angerissen habe das ist 2:29 die parameter übergabe bei methoden wenn ich jetzt so zum beispiel eine testmethode stelle dann können wir diese testmethode von unserem labrador aus 2:39 aufrufen labrador punkt testmethode das ganze macht jetzt aber noch nichts weil wir eben noch keine parameter hier übergeben haben diese parameter 2:48 schreiben wir in dieser runden klammern das heißt jedes mal wenn eine methode noch zusätzliche informationen von außen braucht schreiben wir diese 2:56 informationen in form von datentypen in diese runden klammern hier bei uns hört das jetzt zum beispiel in italien kann bällen und den du siehst und elli gibt 3:06 es hier schon ein fehler an den müssen wir jetzt in diese runden klammern schreiben und wir sagen jetzt in dem fall 3:11 true und helle jay sagt ja auch gleich den namen also die bedeutung des datentypen den durch hierüber gibt und wir sagen jetzt ist kann band dann führe 3:21 die bellen methode aus du siehst methoden kann man von innerhalb der klasse ganz einfach aufrufen indem man ihre namen schreibt und parameter 3:29 übergibt wenn diese zu übergeben sind ist bei bilden jetzt nicht der fall und wenn das ganze einmal starten dann siehst du wird wofür ausgegeben wenn wir 3:38 zum beispiel der methode noch einen string übergeben die nennen wir jetzt mal einfach und wir jetzt sagen wir brauchen in unserer 3:44 bällen methode auch genau diesen string wir wollen jetzt nicht wofür ausgeben sondern das was der methode hierüber geben wird und zwar dieser welt string 3:52 wird dann dieses mal einfach weiterreichen und wir hin und schreiben war dann wird war ausgegeben du siehst also dass diese parameter übergabe auch 4:04 über mehrere methoden hinweg funktioniert hier ist es zum beispiel dieses string objekt was wir zuerst der testmethode im labrador übergeben dann 4:13 schaut diese methode ob der hund überhaupt bringen kann und wenn er wählen kann dann führt er seine eigene bällen 4:19 methode aus und übergibt hielt diesen bäll string an welche methode und wird dann letztendlich ausgegeben so also 4:25 funktioniert die parameter übergabe bei methoden und dieses wissen brauchst du nun um den konstrukteur zu verstehen die konstrukteure methode das ist eine 4:34 besondere methode und deshalb schreibt man sie meistens zwischen den attribut teil von klassen der man oben steht und den methoden teil von klassen der mann 4:43 darunter steht also kommt hier der konstrukteur hin und unsere konstruktive methode deklarieren wir jetzt wie folgt beschreiben public und jetzt hast du 4:52 gelernt braucht jede methode diesen rückgabe typen denn wir mal fortgesetzt haben und zu denen später noch ein video com und der konstrukteur braucht diesen 5:00 rückgabe typen nicht das heißt das programm weiß dass die methode der konstrukteur ist in dem wir beim konstrukteur diesen rückgabe typen hier 5:09 weglassen und die konstruktive methode die kann man jetzt nicht irgendwie nennen nein man muss sie genauso nennen wie den namen der klasse wir schreiben 5:18 also public und setzen wieder gewohnt unsere klammern und haben damit unseren konstrukteur erstellt der konstrukteur ist deshalb so besonders weil er die 5:29 aufgabe hat ganze objekte zu initialisieren ich habe ja schon gesagt dass der konstrukteur immer in verbindung mit den 5:36 attributen steht was wir jetzt machen wollen wir wollen uns genau diese ganze schreibarbeit hier sparen indem wir 5:43 diese logik hier in den konstrukteur schreiben wie machen wir das die idee seit dem konstrukteur ist folgende übergeben ihm in den klammern werte und 5:54 diese werte weisen wir dann den variablen vom objekt zu wie machen wir das wenn wir hier also dem konstrukteur ein alter übergeben dann meckert in 6:05 teltow erstmal schon zeige ich dir nachher wie so und jetzt wollen wir dieses alter hier gleich dem alter vom objekt setzen 6:13 dann schreiben wir einfach bis punkt alter ist gleich alter diese zeile code ist es die mich am anfang so sehr verwirrt hat im grunde 6:24 genommen ist der war ganz einfach zu verstehen du weißt ja wir haben das problem dass wir uns diese ganzen zeilen hier sparen 6:31 wollen und diese zeilen hier sparen wir uns durch den konstrukteur und zwar indem er mit dem konstrukt ohr alle variablen übergeben die auch in der 6:40 klasse definiert sind und dann das alter von diesem objekt gleich dem übergebende malta gesetzt wird welche bedeutung hat nun also diese zeile code hier nun damit 6:50 wir nicht durcheinanderkommen geben wir den variablen die wir hier dem konstrukteur übergeben immer genau die gleichen namen wie den variablen der 6:59 klasse und damit wir nun dieser variablen vom objekt und den wert der übergebenen variablen zuweisen können müssen wir schreiben dieses punkt alter 7:08 ist gleich alter und du siehst es an diesen beiden farben hier einmal weist das programm das wir von diesem rosen alter hier 7:16 hier oben sprechen und beim zweiten mal weiß es dass wir von diesem übergebenen alter aus der methode sprechen und das funktioniert durch dieses ein bisschen 7:25 denn das sagt dem programm ok nimm die die variable die im objekt deklariertes nicht die die übergeben wird 7:33 und setzen sie dann mit dem übergebenen wert gleich ich schreibe das jetzt einmal auch noch für die anderen variablen hin und dann gehen wir das 7:40 ganze einmal durch und dann wird es wesentlich klarer du siehst übergeben den konstrukteur also zu jedem seine attribute einen 7:53 bestimmten wert und weisen dann dem attribut aus diesem objekt diesen wert hier gleich und das machen wir immer durch das schlüsselwort bis dann den 8:03 namen unserer variablen hier und dann dem konstrukteur überwiesenen wert so und das ist wieder konstrukteur aussieht wie gesagt das ist kein hexenwerk aber 8:13 dieses verständnis der übergabe von werten und das gleichsetzen hier mit diesem biss und so da musst du eben ein bisschen rum spielen bist du es dann 8:23 voll verstanden hast was können wir mit unserem konstrukteur also jetzt anfangen ich habe ja schon gesagt dass der konstrukteur eine besondere methode ist 8:32 und deshalb werden die werte auch an einer besonderen stelle übergeben und zwar hier bei der initialisierung von dem neuen hund objekt die werte 8:41 schreiben wir nämlich einfach jetzt in diese klammer du siehst schon diese rot wellenlinie die bedeutet dass er jetzt eben aufgrund von dem konstrukt ohr 8:50 diese vier werte hier erwartet damit das programm eben diesen werten seinen variablen zuweisen kann wir schreiben nun also 4 labrador 9:01 schwarz und true und ich mache ich hier mal ein absatz damit du es besser lesen kannst nun haben wir unserem labrador durch den konstrukteur diese ganzen 9:12 werte hier zugewiesen und uns damit diese zeilen hier gespart und du siehst im dem sinne ist diese zeile hier labrador also der verweis aufs objekt 9:23 punkt alter ist gleich vier nichts anderes als die zeile die wir hier auch im konstrukteur geschrieben haben nur schreiben wir nun wissen und nicht 9:34 labrador es ist aber beides der verweis auf das eigene objekt punkt ist gleich alter und das sehr genau der wert den wir hier bald geben also um dem sinne 9:44 auch 4 deshalb können wir uns jetzt diesen ganzen zeilen hier sparen und als beweis dafür dass das ganze funktioniert hat 9:51 können wir jetzt die werte vom labrador ausgeben der labrador ist dann das alter vom labrador jahre alt und wenn wir das ganze starten 10:01 dann siehst du wird das ganze hier aus gehen und ich habe es noch ein leerzeichen vergessen und du siehst hier der labrador ist vier jahre alt wie 10:09 kommt das ganze herz nun der konstrukteur eben besonders für den anfang für dich wahrscheinlich auch kein leichtes thema gehe ich das ganze jetzt 10:16 noch ein letztes mal mitten durch also übergeben dem konstrukteur hier für die variable alter den wert 4 dieser wert vier kommt jetzt also hier 10:25 im objekt an und nichts punkt alter wird jetzt eben diesen übergebenen wert 4 gleichgesetzt und das punkt alter ist ihr einfach eine referenz auf genau 10:36 diese variable und auf die können wir eben mit labrador punkt alter zu greifen das war es auch so weit mit der erklärung zu konstrukteuren er zeige ich 10:46 dir noch eine kleine spielerei wenn wir uns hier noch ein paar andere objekte erstellen dafür ein danke der ist braun ist und wir sagen wir wollen ein mops 10:58 was wir jetzt mit diesen drei verschiedenen objekten anstellen können ist wir können uns damit ein hund erstellen schreiben also hund dann diese 11:07 eckigen klammern kunde ist gleich jetzt einfach diese kurz schreibweise aber geschwächte klammern danke wir haben uns nun also ein hund 11:17 mit diesen drei kunden herstellt und was wir jetzt damit machen können wir können zum beispiel ganz leicht herausfinden welche arten von hunden wir haben und 11:28 die finden wir indem wir jetzt unsere ray auslesen dafür benutzten wir einfach wieder eine vor schleife und jetzt schreiben wir einfach hunde 11:37 und damit wird jetzt eben nach und nach auf jedes dieser objekte hier verwiesen und jetzt punkte und damit gibt uns das programm alle arten von hunden aus die 11:50 wir hier in unserem hund ray gespeichert haben eine andere kleine spielerei ist dass wir jetzt zum beispiel schreiben wie viele hunde können fothen geben wenn 11:59 du dass sie eben selbst programmieren möchtest dann was ich dir kurzzeit das video zu pausieren ansonsten zeigte eben die lösung und 12:06 zwar zu mir dafür wieder unsere vor schleife was wir jetzt aber brauchen ist ein counter der eben jetzt die anzahl der ohne die toten geben kann speichert 12:16 was wir jetzt machen müssen ist wenn der hund der wir hier referenzieren also hunde wie wenn der foto geben kann dann vom discounter um 1 erhöhen und am ende 12:27 wollen wir einfach counter ausgeben wenn wir das ganze hier starten dann siehst du wird eins ausgegeben gut das heißt mit dem heutigen video zu 12:37 attributen und konstrukteuren ich weiß konstrukteuren sind für den anfang ein sehr schwieriges thema und mein tipp an dich erstelle dir einfach selbst ein 12:44 paar klassen und entsprechender konstrukteuren dafür und wenn du das ein paar mal gemacht hast dann wird es dir wie das natürlichste der welt vorkommen 12:52 wie immer wenn du fragen hast schreibe mir eine nachricht oder postition in die kommentare wenn ihr das video gefallen hat und du 12:59 heute etwas gelernt hast dann nach dem video einen daumen nach oben da und wenn du heute alles verstanden hast dann sehen wir zum nächsten video