"Hej, Amigo! Nu vil jeg fortælle dig om, hvordan objekter skabes."
"Hvad er der så kompliceret ved det, onkel Rishi? Du skriver nyt og klassenavnet, angiver den korrekte konstruktør, og du er færdig!"
"Det er rigtigt. Men hvad sker der inde i genstanden, når du gør det?"
"Hvad der sker?"
"Dette er, hvad der sker: Objektet skabes i flere faser."
1) Først tildeles hukommelse til alle klassens medlemsvariable.
2) Derefter initialiseres basisklassen.
3) Derefter tildeles alle variablerne værdier, hvis der er angivet nogen.
4) Til sidst kaldes konstruktøren.
"Det ser ikke særlig svært ud: først variablerne, så konstruktøren."
"Lad os se, hvordan dette fungerer i et eksempel med to klasser:"
Kode | Beskrivelse |
---|---|
|
Erklær to klasser: Pet(kæledyr) og kat(kat).
I Cat-klassen ser vi et eksplicit kald til basisklassens konstruktør . Her er, hvad der sker, efter at hukommelsen er allokeret: Så begynder Cat-klassen at blive initialiseret. |
|
"Det er lidt forvirrende. Hvorfor er det så kompliceret?"
"Det er faktisk ikke svært, hvis du ved, hvad der virkelig foregår:"
Hvis en klasse ikke har nogen konstruktører, oprettes en automatisk.
Standard konstruktør | |
---|---|
|
|
Hvis du ikke kalder basisklassekonstruktøren, kaldes den automatisk.
Kald af basisklassens konstruktør | |
---|---|
|
|
|
|
Medlemsvariable initialiseres i konstruktøren.
Initialisering af medlemsvariabler | |
---|---|
|
|
Hvad sker der virkelig | |
---|---|
|
|
"Nu er det meget mere klart: først basisklassen, så variabler uden for konstruktøren, så konstruktørkoden."
"Godt gået, Amigo! Det var det!"
GO TO FULL VERSION