Cursos / Eletrônica / Programação Orientada a Objetos / Aula

arrow_back Aula 14 - Juntando as Peças

Encapsulamento e Herança

Os conceitos de encapsulamento e herança são relacionados e se entrelaçam. Vimos anteriormente que cada classe define seus atributos, vimos também a forma de acesso a eles, de forma a preservar a segurança dos dados (atributos) com relação a alterações acidentais ou não desejadas.

Uma das formas de controlar tal acesso é simplesmente impossibilitar que código externo possa acessá-la. Isso é o que chamamos de encapsulamento. Você viu também que uma classe pode possuir outras classes descendentes, nesse caso, herdam seus respectivos atributos e comportamentos. Isso é o que chamamos herança. Veja os pilares da programação orientada a objetos.

Pilares da POO

Um dos pontos que não discutimos em aulas anteriores diz respeito à forma de acesso (visibilidade) dos atributos de classes filhas. Voltemos a esse ponto.

Considere uma classe mãe (Listagem1) com os seguintes atributos: idade, nome, sobrenome materno e sobrenome paterno. E uma classe filha, chamada Filha (Listagem 2), em que iremos experimentar os modificadores de acesso diante da estrutura hierárquica definida entre essas classes.

Listagem 1 - Classe Mãe
Listagem 2 - Classe Filha

Observe que a classe Filha herda todos os atributos de sua Mãe, porém, o atributo sobrenomeMaterno não pode ser acessado diretamente de dentro da classe Filha por ser do tipo private. Logo, a linha comentada representa um erro para o compilador Java.

Os demais atributos são do tipo protected e public. Atributos public podem ser acessados de qualquer lugar no programa e representam o extremo do acesso livre em Java. Atributos protected são aqueles que podem ser acessados apenas pelas subclasses da classe que declara tais atributos.

Os atributos public e protected são sempre visíveis em classes filhas.

Os atributos private não. Porém, eles estão lá! Não se esqueça, o fato de não estar visível não significa não existir. Pois, podemos modificá-los através dos construtores da classe mãe (fazendo chamadas com o super), assim como usando os métodos get e set definidos na classe mãe.

Lembre-se:

A classe filha sempre herda as características da mãe, mas só pode ver o que a mamãe deixa ;-).

Os exemplos que vimos sobre herança e encapsulamento demonstraram sua utilização através de atributos, porém, tudo que vimos se aplica exatamente da mesma maneira com os métodos.

Para praticar, que tal fazermos um exercício?

Versão 5.3 - Todos os Direitos reservados