"Hej Amigo! Nu ska jag berätta om hur föremål skapas."
"Vad är det som är så komplicerat med det, farbror Rishi? Du skriver nytt och klassnamnet, anger rätt konstruktör och du är klar!"
"Det är sant. Men vad händer inuti föremålet när du gör det?"
"Vad händer?"
"Det här är vad som händer: Objektet skapas i flera steg."
1) Först tilldelas minne för alla klassens medlemsvariabler.
2) Sedan initieras basklassen.
3) Sedan tilldelas alla variabler värden, om några är specificerade.
4) Slutligen anropas konstruktorn.
"Det ser inte särskilt svårt ut: först variablerna, sedan konstruktören."
"Låt oss se hur detta fungerar i ett exempel med två klasser:"
Koda | Beskrivning |
---|---|
|
Deklarera två klasser: Pet(pet) och Cat(cat).
I klassen Cat ser vi ett explicit anrop till basklassens konstruktor . Här är vad som händer efter att minnet har allokerats: Sedan börjar Cat-klassen initieras. |
|
"Det är lite förvirrande. Varför är det så komplicerat?"
"Det är faktiskt inte svårt om du vet vad som verkligen händer:"
Om en klass inte har några konstruktorer skapas en automatiskt.
Standardkonstruktör | |
---|---|
|
|
Om du inte anropar basklasskonstruktorn kommer den att anropas automatiskt.
Anrop av basklassens konstruktor | |
---|---|
|
|
|
|
Medlemsvariabler initieras i konstruktorn.
Initialisering av medlemsvariabler | |
---|---|
|
|
Vad händer egentligen | |
---|---|
|
|
"Nu är det mycket tydligare: först basklassen, sedan variabler utanför konstruktorn, sedan konstruktorkoden."
"Bra gjort, Amigo! Det var allt!"
GO TO FULL VERSION