Herança
A Herança é um dos 4 pilares da programação orientada a objetos (POO) e é um conceito fundamental para o desenvolvimento de software. Ela se refere à capacidade de uma classe (chamada de subclasse ou classe filha) herdar características (atributos e métodos) de outra classe (chamada de superclasse ou classe pai). A subclasse pode então estender ou modificar o comportamento herdado, além de adicionar novos atributos e métodos.
A Herança oferece vários benefícios:
Reutilização de Código: a subclasse pode aproveitar as funcionalidades existentes da superclasse;
Extensibilidade: a subclasse pode estender ou modificar o comportamento herdado da superclasse;
Polimorfismo: permite que objetos de diferentes tipos (superclasse e subclasses) sejam tratados de forma uniforme;
Organização e Estruturação: ajuda a organizar e estruturar o código de forma hierárquica, representando relações de "é um" entre classes;
Abstração e Generalização: permite a criação de classes abstratas e interfaces que definem um conjunto comum de características para um grupo de classes relacionadas;
Permite Modelar Hierarquias de Classes: essencial para modelar objetos do mundo real que tem hierarquias naturais.
ReusoA Herança é uma forma fundamental de reuso na programação orientada a objetos (POO).
Definição
A herança é uma forma de reuso em que uma classe (subclasse) herda características (atributos e métodos) de outra classe (superclasse).
Novas classes são criadas para estender as classes existentes. Essas classes podem estender ou modificar o comportamento herdado e adicionar novos atributos e métodos.
O relacionamento "é um [subtipo de]"

Abstração x Mundo Real:

Neste tipo de reuso prevalece o forte acoplamento.
Isso significa que a subclasse herda não apenas os atributos e métodos da superclasse, mas também a implementação desses métodos.
A classe filha não pode remover os atributos e métodos da classe mãe; e essa não conhece os métodos e atributos criados na classe filha.
Java adota o modelo de árvore, cuja classe Object é a raiz dessa hierarquia de classes.

Uma classe Java só pode estender uma outra classe (herança simples) com o uso da palavra reservada extends
Quando uma classe não declara nada, esta (implicitamente) estende Object
Os construtores das subclasses não herdam os construtores das superclasses. Portanto, a chamada a eles deve ser feita pelo uso do comento super()

Classes Constantes
São classes que não podem ser estendidas, isto é, gerar subclasses a partir delas.
Todos os métodos dessa classe são do tipo final
Muito útil em classes que contém funções utilitárias e constantes.
seUma classe constante (final) em Java não é o mesmo que uma classe sealed no .NET.
Classe final em Java: Uma classe declarada como
finalnão pode ser estendida (herdada) por nenhuma outra classe. Exemplo:Isso significa que ninguém pode criar subclasses de
MinhaClasse.Classe sealed no .NET (C#): Uma classe
sealedem C# também não pode ser herdada, ou seja, é equivalente aofinaldo Java:Classe sealed em Java (Java 17+): Java também tem o conceito de
sealed class, que permite controlar quais classes podem estender uma classe base:Apenas as classes listadas após
permitspodem herdar deForma.Resumo:
finalem Java =sealedem C#: impede herança.
sealedem Java = permite herança restrita a subclasses específicas (mais flexível quefinal).Portanto,
finalem Java é igual asealedem C#, massealedem Java é um conceito mais avançado.

Exercícios
Exercício 1 - Criar as classes Estatutario, Comissionado e Temporario com todos os seus atributos e métodos
Exercício 2 - Criar pelo menos 1 objeto de cada uma das subclasses criadas acima
ServidorPublico.java
Comissionado.java
Estatutario.java
Temporario.java
App.java
Last updated