Herança é um dos três princípios básicos da programação orientada a objetos.
Permite a criação de classificações hierárquicas.
Com herança, você pode criar uma classe geral que define características comuns a um conjunto de itens relacionados.
Essa classe geral pode ser herdada por outras classes mais específicas, que adicionam características exclusivas.
No jargão Java, a classe herdada é chamada de superclasse.
A classe que herda é chamada de subclasse.
A subclasse é uma versão especializada da superclasse.
A subclasse herda todas as variáveis e métodos da superclasse e adiciona seus próprios elementos exclusivos.
Aspectos básicos de herança
Java suporta herança, permitindo que uma classe incorpore outra em sua declaração.
Isso é feito com a palavra-chave extends.
A subclasse adiciona funcionalidades (estende) à superclasse.
Um exemplo disso é a criação de uma superclasse chamada TwoDShape, que armazena a largura e a altura de um objeto bidimensional.
Uma subclasse chamada Triangle é criada para estender TwoDShape.
A palavra-chave extends é usada para criar a subclasse.
TwoDShape define atributos de uma forma bidimensional genérica, como quadrado, retângulo, triângulo, etc.
A classe Triangle é uma subclasse de TwoDShape e cria um tipo específico: o triângulo.
Triangle herda tudo de TwoDShape e adiciona o campo style, o método area(), e o método showStyle().
style armazena o estilo do triângulo, que pode ser qualquer descrição como "cheio", "contorno", ou "isósceles".
O método area() calcula e retorna a área do triângulo.
O método showStyle() exibe o estilo do triângulo.
Triangle pode acessar os membros width e height de TwoDShape, tanto em area() quanto diretamente nos objetos t1 e t2.
TwoDShape, apesar de ser superclasse de Triangle, é uma classe independente e pode ser usada separadamente.
TwoDShape shape = new TwoDShape();
shape.width = 10;
shape.height = 20;
shape.showDim();
- Um objeto da classe TwoDShape não conhece nem acessa qualquer subclasse de TwoDShape.
- Declaração class que herda uma superclasse:
class nome-subclasse extends nome-superclasse {
// corpo da classe
}
Em Java, você só pode especificar uma única superclasse para qualquer subclasse criada.
Java não suporta herança múltipla (herança de várias superclasses na mesma subclasse), ao contrário de C++.
É possível criar uma hierarquia de herança onde uma subclasse se torna a superclasse de outra subclasse.
Nenhuma classe pode ser superclasse de si mesma.
Uma vantagem da herança é que uma superclasse pode definir atributos comuns a vários objetos, permitindo a criação de inúmeras subclasses específicas.
Cada subclasse pode definir sua própria classificação específica com base na superclasse.
Um exemplo disso é criar uma subclasse de TwoDShape para encapsular retângulos.
A classe Rectangle é uma subclasse de TwoDShape.
Adiciona o método isSquare(), que determina se o retângulo é um quadrado (quando a largura é igual à altura).
Adiciona também o método area(), que calcula a área do retângulo.
Top comments (0)