"Hei, Amigo! Nå skal jeg fortelle deg om hvordan objekter blir til."
"Hva er så komplisert med det, onkel Rishi? Du skriver nytt og klassenavnet, angir riktig konstruktør, og du er ferdig!"
"Det er sant. Men hva skjer inne i objektet når du gjør det?"
"Hva skjer?"
"Dette er hva som skjer: Objektet lages i flere stadier."
1) Først tildeles minne for alle klassens medlemsvariabler.
2) Deretter initialiseres basisklassen.
3) Deretter blir alle variablene tildelt verdier, hvis noen er spesifisert.
4) Til slutt kalles konstruktøren.
"Det ser ikke veldig vanskelig ut: først variablene, så konstruktøren."
"La oss se hvordan dette fungerer i et eksempel med to klasser:"
Kode | Beskrivelse |
---|---|
|
Erklær to klasser: Pet(pet) og Cat(cat).
I Cat-klassen ser vi et eksplisitt kall til basisklassens konstruktør . Her er hva som skjer etter at minnet er tildelt: Deretter begynner Cat-klassen å bli initialisert. |
|
"Det er litt forvirrende. Hvorfor er det så komplisert?"
"Det er faktisk ikke vanskelig hvis du vet hva som egentlig skjer:"
Hvis en klasse ikke har noen konstruktører, opprettes en automatisk.
Standard konstruktør | |
---|---|
|
|
Hvis du ikke kaller opp basisklassekonstruktøren, blir den kalt automatisk.
Anrop av basisklassens konstruktør | |
---|---|
|
|
|
|
Medlemsvariabler initialiseres i konstruktøren.
Initialisering av medlemsvariabler | |
---|---|
|
|
Hva skjer egentlig | |
---|---|
|
|
"Nå er det mye mer klart: først basisklassen, deretter variabler utenfor konstruktøren, deretter konstruktørkoden."
"Godt gjort, Amigo! Det er det!"
GO TO FULL VERSION