Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Atributos herdados e referencia ao espaço de memória na classe filha

Quando instanciada uma classe, o objeto aponta pro espaço de memória criado e nele tem, além dos atributos da classe, os atributos da classe mãe. No entanto, se o atributo da classe mãe é privado, mesmo estando dentro do espaço de memória ao qual o objeto aponta, ele não tem acesso, ou seja eu posso atribuir qualquer coisa ao atributo usando os métodos da classe mãe e vai funcionar, mas não consigo acessar o atributo, mesmo ele estando ali naquele espaço de memória junto com os atributos da classe normal que eu consigo acessar. Como esse mecanismo nesse caso funciona mais a fundo? Quero entender melhorInsira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Oi Carolina, tudo bem?

A JVM simplesmente verifica um sinalizador (inicialmente definido pelo compilador) para ver se o código atual tem acesso à variável ou método que está sendo acessado e, em seguida, permite o acesso ou lança uma exceção. Tudo se resume a resolver o campo (primeiro resolvendo a classe, se necessário) e, em seguida, verificar se o campo é acessível ao código de chamada. Não há um espaço especial na memória para campos privados.

Olá Carolina, tudo bem?

isso é algo que envolve o encapsulamento do JAVA. Posso fazer uma analogia para tentar explicar o funcionamento e o porquê disso?

Digamos que a sua bolsa está em cima da mesa e eu quero pegar alguma coisa dentro dela.

Eu poderia abrir a sua bolsa e retirar, por exemplo, um documento teu e utilizar. Correto?

Eu poderia também abrir a sua bolsa e colocar uma caneta dentro dela e fechar. Correto?

Mas isso seria algo que você iria gostar / se sentir segura se qualquer pessoa pudesse fazer isso e sem permissão?

Para isso que servem os setters e getter:

Getters: "Olá Carol, eu poderia pegar o seu documento para confirmar a sua identificação?"

Setters: "Olá Carol, eu poderia colocar essa caneta em seu estojo?"

Isso da uma camada de proteção, onde que em apenas, determinados momentos, exista uma permissão para fazer as alterações dos atributos que possa, realmente, alterar o valor do atributo.


"mas não consigo acessar o atributo, mesmo ele estando ali naquele espaço de memória junto com os atributos da classe normal que eu consigo acessar" :

Sua bolsa ou qualquer coisa que você possua está sendo observado e é possível mexer, mas precisa passar por uma permissão sua antes para realmente ter acesso ao que está querendo