Vídeo: Curso POO Java #10b - Herança (Parte 1) 2024
A herança refere-se a uma característica da programação Java que permite criar classes derivadas de outras classes. Uma classe baseada em outra classe herda a outra classe. A classe que é herdada é a classe pai , a classe base , ou a superclasse . A classe que faz a herança é a classe filho , a classe derivada , ou a subclasse .
Uma subclasse assume automaticamente todos os comportamentos e atributos de sua classe base. Assim, se você precisar criar várias classes para descrever tipos que não são idênticos, mas que têm muitos recursos em comum, você pode criar uma classe base que defina todos os recursos comuns. Então você pode criar subclasses que herdam os recursos comuns.
Uma subclasse pode adicionar recursos à classe base que herda definindo seus próprios métodos e campos. Esta é uma das formas pelas quais uma classe derivada se distingue da sua classe base.
Uma subclasse também pode alterar o comportamento fornecido pela classe base. Uma classe base pode fornecer que todas as classes derivadas dele tenham um método chamado play, por exemplo, mas cada classe é livre para fornecer sua própria implementação do método play. Nesse caso, todas as classes que estendem a classe base fornecem sua própria implementação do método de jogo.
Para criar uma subclasse, você usa a palavra-chave extends na declaração da classe para indicar o nome da classe base. O formato básico de uma declaração de subclasse é este:
classe pública Nome da classe estende BaseClass {// o corpo da classe vai aqui}
A subclasse herda automaticamente o corpo da turma da classe base, então quaisquer métodos ou campos que são definidos pela classe base serão automaticamente incluídos na subclasse. Assim, o corpo da classe para uma subclasse inclui apenas os métodos ou campos que diferenciam a subclasse de sua classe base.
Por exemplo, suponha que você tenha uma classe chamada Bola que defina uma bola básica, e você deseja criar uma subclasse chamada BouncingBall que adicione a capacidade de saltar. Você poderia fazer isso assim:
classe pública BouncingBall estende Ball {public void bounce () {// the bounce method}}
Aqui estão alguns outros detalhes importantes sobre a criação de subclasses:
-
Uma subclasse herda todos os membros da sua classe base. Os construtores são não considerados membros, no entanto. Como resultado, uma subclasse não herdar construtores da sua classe base.
-
A visibilidade (pública ou privada) de qualquer membro herdado da classe base é a mesma na subclasse.Isso significa que você não pode acessar os métodos ou campos de subclasse que são declarados na classe base como privados.
-
Você pode substituir um método declarando um novo membro com a mesma assinatura na subclasse.
-
Um tipo especial de visibilidade chamado proteção protege campos e métodos de outras classes, mas os disponibiliza para subclasses.
-
Você pode adicionar mais métodos ou campos - privados, públicos ou protegidos - a uma subclasse.