Foi dito na aula que a equipe Caelum concorda com o fato de que, em muitos casos, a herança quebra o encapsulamento. Isso me pareceu um pouco confuso, poderiam me esclarecer melhor essa quebra, e se possivel, exemplificar?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Foi dito na aula que a equipe Caelum concorda com o fato de que, em muitos casos, a herança quebra o encapsulamento. Isso me pareceu um pouco confuso, poderiam me esclarecer melhor essa quebra, e se possivel, exemplificar?
Oi Thiago, tudo bem ?
Algumas vezes realmente ela acaba quebrando, pensa no exemplo de termos um atributo privado e sem o setter na classe mãe, ok ? Agora criamos uma classe filha que estende da classe mãe, perfeito ? Quando fizemos isso, a classe filha tem acesso a todos os métodos e atributos da classe mãe, ou seja, pode alterar totalmente os comportamentos, por exemplo aquele atributo privado que não tinha o setter.
Olá, Matheus. Obrigado por reponder. Mas, nesse caso, já não poderia dizer que a classe mãe não segue as boas práticas do encapsulamento? Visto que, embora o atributo seja privado, seria bom que existisse um setter. Ao meu ver, a classe mãe não está bem encapsulada, então a herança apenas "repassou" o erro para as classes filhas. É isso que chamamos de quebra do encapsulamento pela herança ? Mesmo que a classe já não esteja bem encapsulada ?
Thiago, tudo bem ?
Então cara, isso é um pouco complicado de falar, porque na minha opnião encapsulamento não é só deixar o campo privado e criar getter e setter, porque pensa bem, a única diferença é que você não acessa ele diretamente, contudo atráves do setter pode sempre ficar manipulando aquele valor. Entende ?