Olá Fernando, tudo bem com você?
Vou tentar te explicar com o exemplo do exercício, ok?
Temos então uma classe Pessoa que tem seus atributos (nome, cpf, idade, etc.) e isso é como se fosse a estrutura básica de uma pessoa
Instanciar é quando estamos criando aquele objeto (pegando toda a sua estrutura e materializando) para poder utilizar
No momento em que fazemos:
Pessoa pessoa1 = new Pessoa();
É quando de fato estamos instanciando uma nova pessoa, isto é, criando um espaço na memória onde iremos guardar as informações que foram definidas em sua estrutura (classe Pessoa).
Então agora temos um espaço na memória que tem reservado um lugar para colocar o nome
, cpf
.
Esse lugar reservado pode ser acessado através da variável pessoa1
e dessa forma podemos acessar os nossos atributos com pessoa1.nome
, pessoa1.cpf
:)
Então no exercício:
Ou seja, quem a esta utilizando, teve que atribuir uma instância de Endereco à propriedade p.endereco para que não houvesse um erro
É o que de fato estamos fazendo, a nossa pessoa precisa de um objeto do tipo Endereço
e para ter um objeto desse tipo eu preciso materializar (instanciar) um endereço:
p.endereco = new Endereco();
Quando fizemos isso, estamos dizendo que o p.endereco
irá reservar um espaço na memória para guardar os atributos de endereço (logradouro, rua, etc.) :)
Compreendeu? Qualquer coisa estou a disposição :)
Abraços e Bons Estudos!