Introduktion til java del 1 - konstruktører

Tags:    java
Skrevet af Bruger #2796 @ 01.02.2003
I denne artikel vil jeg komme med en kort introduktion til java ved at vise, hvordan konstruktører virker. Derudover vil jeg komme med nogle udtryk og tips som man skal/kan bruge, når man udvikler programmer i java eller et andet objekt orienteret sprog.


Opsætningen af klassen



Det aller første man burde lære noget om er, hvad en konstruktør er. En kontruktør er det første der bliver initialiseret i et nyt objekt, og hvis der ikke laves en konstruktør, laves der automatisk en bag om ryggen på dig. Den konstruktør der laves bag-om-ryggen kan man jo bare ikke fortælle hvad der skal ske nå selve objektet skal initialiseres. Derfor er det altid smart at lave en konstruktør, også selvom man ikke ligger noget i den (det er god programmering at gøre det).

Konstruktøren har det samme navn som den klasse man laver den i. I modsætning til f.eks. pascal/delphi, som kalder deres konstruktør for "constructor()" bruger man altså i java, navnet på selve klassen.

Her er et eksempel på det:

Fold kodeboks ind/udKode 


Denne klasse gjorde jo ikke særligt meget, men princippet er der. Der bliver kun vist hvordan man opretter en konstruktør, og den konstruktør der bliver oprettet er klassens default-konstruktør. Grunden til at det er klassens default-konstruktør, er fordi at der ikke er nogen parameter i den. Hvad er parameter? kan du så spørge. Jow ser du, parametre er de værdier som en metode tager med ind, via metode kaldet. Jeg ved godt det lyder lidt forvirrende, men kig på dette eksempel:

Fold kodeboks ind/udKode 


Denne gang er konstruktøren ikke længere en default konstruktør, da den tager en parameter med. "String navn" er denne konstruktørs parameter, og der kan skrives mange flere på, hvis det er det man ønsker.


Hvad skal man så bruge en konstruktør til?


Det man typisk bruger en konstruktør til, er at initialisere et objekt, med nogle bestemte værdier, da man så ikke skal sidde og skrive de værdier ind bagefter.

Derved, bliver klassen også mere dynamisk, end hvis man prædefinerede værdierne i selve klassen, og den så brugte de prædefinerede værdier hver gang man oprettede et objekt af den type.


Flere eksempler


Her er der et eksempel på hvordan man kan bruge et konstruktør, til at oprette en person:

Fold kodeboks ind/udKode 


Dette eksempel opretter en person ved navn "Jimmi" og alder 22, og udskriver følgende:

så Jimmi du er altså 22 år gammel.

Alt dette betyder, at det er blevet meget nemmere at lave klasser i java, som opføre sig på bestemte måder. Man kan f.eks. udvide eksemplet med, at den beregner den dag man er født, eller mange andre ting.
Idéen var som sagt bare at vise hvordan man lige brugte en konstruktør. Men, der kan også bruges 2 eller flere konstruktører. Man skal bare vælge at bruge de forskellige konstruktører, når der oprettes et objekt af typen.

Hvis vi nu fortsætter lidt på dette eksempel, og udvider den til at have 2 konstruktører (en default og en anden), så kan vi se hvordan det gøres:

Fold kodeboks ind/udKode 


Denne gang bliver der udskrevet følgende:
så Jimmi du er altså 22 år gammel.
Hejsa anonyme person

Den første linje blev udskrevet fra konstruktøren med parametre, og linje nr 2 blev udskrevet fra den defaulte konstruktør.
Der kan ligges mange flere konstruktør til dette eksempel, men da det bare er et lille eksempel, er dette ikke gjort.

Jeg håber i kan bruge denne artikel om konstruktører til noget, og at den gav jer lyst til at programmere videre i java.

Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.

Del også gerne artiklen med dine Facebook venner:  

Kommentarer (14)

User
Bruger #2796 @ 04.02.03 13:26
Det virker... tro mig...
User
Bruger #2730 @ 04.02.03 10:42
God artikel, der på en forståelig og god måde forklarer brugeren hvordan man laver en constructor. Jeg savner godt nok i andet kodeeksempel at du skiller main metoden ud fra klasse definitionen. Det forvirrer en smule. Det vil heller aldrig virke da main metoden mangler en klasse definition.
User
Bruger #349 @ 01.02.03 23:01
Kanon artikel!
User
Bruger #489 @ 05.02.03 16:48
Main metoden mangler heller ikke en klasse definition. Den er jo defineret inde i Person-klassen.
User
Bruger #3130 @ 10.02.03 22:06
Godt og enkelt skrevet
User
Bruger #2969 @ 14.02.03 21:16
Jeg er måske hård med karakteren (har givet den 1), men det er fordi jeg ikke synes du kan kalde dette en introduktion til Java - jeg kender Java, men kan forestille mig at nybegyndere misforstår OOP-begrebet hvis de kun læser din artikler her om constructorer..! Hvis jeg skulle skrive en introduktion ville jeg starte med at forklare OOP og så derefter hvordan Java passer ind i dette. F.eks. at en constructor reelt ikke er andet end en særlig metode!
User
Bruger #3681 @ 06.04.03 22:01
Lige en kommentar. Man kan godt have mange forskellige constructor's. Det kræver dog at man skal have forskellige parametre til de forskellige constructors
User
Bruger #2796 @ 22.04.03 20:44
til ThomasW: jeps
User
Bruger #2796 @ 23.04.03 22:16
til Morten Dahl:
se her: http://www.udvikleren.dk/show_article.php?id=141
User
Bruger #4966 @ 10.03.04 16:32
Forstad ikke noget :-( Hvilket program skal man bruge for at lave det?
User
Bruger #2796 @ 18.04.04 17:44
Du skal ikke bruge det til et bestemt program, men du "skal" bruge det, når du vil initialisere et objekt som du skal bruge. Her er konstruktøren handy, da det er det der bliver automatisk kaldt, når du opretter objektet. f.eks. String s = new String(); <-- der bliver konstruktøren kaldt.
User
Bruger #10399 @ 17.08.06 13:29
Halløj alle! :D

Jeg er helt (og mener helt) ny i Java-verdenen, og fik lige anbefalet den her side af en ven, da jeg fortalte ham jeg godt kunne tænke mig at lære lidt begynder Java :)

Denne her artikel faldt først for mine øjne, og jeg må sige, det er det mest forvirrende jeg nogensinde har set :|

Jeg er selvfølgelig også helt ny, nogen der kunne give mig et link eller en side til nybegyndere?
User
Bruger #14855 @ 10.06.09 20:48
I know i am late, men tage en af de tidliger versioner som mig, jeg har lært lidt men synes stadig dette er forvirrerne.
User
Bruger #14855 @ 10.06.09 20:58
Hmm tror jeg kom med min kommentar lidt for hurtig, god artikel men vil gerne havet fået analyseret det sidste eksempel bedre :( 3 her fra ;)
Du skal være logget ind for at skrive en kommentar.
t