"Здравей, Амиго! Сега ще ти разкажа How се създават обекти."
"Какво му е толкова сложното, чичо Риши? Пишеш new и името на класа, посочваш правилния конструктор и готово!"
"Това е вярно. Но Howво се случва вътре в обекта, когато направите това?"
"Какво става?"
„Ето Howво се случва: обектът се създава на няколко етапа.“
1) Първо се разпределя памет за всички членски променливи на класа.
2) След това базовият клас се инициализира.
3) След това на всички променливи се присвояват стойности, ако има такива.
4) Накрая се извиква конструкторът.
„Не изглежда много трудно: първо променливите, след това конструкторът.“
„Нека да видим How работи това в пример с два класа:“
Код | Описание |
---|---|
|
Декларирайте два класа: Pet(pet) и Cat(cat).
В класа Cat виждаме изрично извикване на конструктора на базовия клас . Ето Howво се случва след заделяне на паметта: След това класът Cat започва да се инициализира. |
|
„Това е малко объркващо. Защо е толкова сложно?“
„Всъщност не е трудно, ако знаете Howво наистина се случва:“
Ако даден клас няма конструктори, такъв ще бъде създаден автоматично.
Конструктор по подразбиране | |
---|---|
|
|
Ако не извикате конструктора на базовия клас, той ще бъде извикан автоматично.
Извикване на конструктора на базовия клас | |
---|---|
|
|
|
|
Членските променливи се инициализират в конструктора.
Инициализация на членски променливи | |
---|---|
|
|
Какво наистина се случва | |
---|---|
|
|
„Сега е много по-ясно: първо базовият клас, след това променливите извън конструктора, след това codeът на конструктора.“
"Браво, Амиго! Това е!"
GO TO FULL VERSION