"Olá, amigo! Agora vou contar como os objetos são criados."
"O que há de tão complicado nisso, tio Rishi? Você escreve new e o nome da classe, indica o construtor correto e pronto!"
"Isso é verdade. Mas o que acontece dentro do objeto quando você faz isso?"
"O que acontece?"
"Isto é o que acontece: o objeto é criado em vários estágios."
1) Primeiro, a memória é alocada para todas as variáveis de membro da classe.
2) Em seguida, a classe base é inicializada.
3) Em seguida, todas as variáveis recebem valores, se algum for especificado.
4) Finalmente, o construtor é chamado.
"Não parece muito difícil: primeiro as variáveis, depois o construtor."
"Vamos ver como isso funciona em um exemplo com duas classes:"
Código | Descrição |
---|---|
|
Declare duas classes: Pet(pet) e Cat(cat).
Na classe Cat, vemos uma chamada explícita ao construtor da classe base . Veja o que acontece depois que a memória é alocada: Então a classe Cat começa a ser inicializada. |
|
"Isso é um pouco confuso. Por que é tão complicado?"
"Na verdade, não é difícil se você souber o que realmente está acontecendo:"
Se uma classe não tiver nenhum construtor, um será criado automaticamente.
Construtor padrão | |
---|---|
|
|
Se você não chamar o construtor da classe base, ele será chamado automaticamente.
Chamada do construtor da classe base | |
---|---|
|
|
|
|
As variáveis de membro são inicializadas no construtor.
Inicialização de variáveis de membro | |
---|---|
|
|
O que realmente acontece | |
---|---|
|
|
"Agora está muito mais claro: primeiro a classe base, depois as variáveis fora do construtor, depois o código do construtor."
"Muito bem, Amigo! É isso!"
GO TO FULL VERSION