Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Princípios de POO: Herança | Section
Practice
Projects
Quizzes & Challenges
Questionários
Challenges
/
Fundamentos da Programação Orientada a Objetos em Java

bookPrincípios de POO: Herança

Deslize para mostrar o menu

Herança

Vamos abordar o princípio da POO - Herança.

Herança é um mecanismo que permite a criação de classes com base em outra classe.

  • A classe que serve como base é chamada de classe pai ou superclasse;
  • A classe criada com base na classe pai é chamada de classe filha, subclasse ou descendente.

Assim, a classe filha pode herdar as características e propriedades de outra classe - a classe pai (seus métodos e variáveis).

É possível herdar uma classe utilizando a palavra-chave extends. A sintaxe para uma classe filha herdando de uma classe pai é a seguinte:

Child.java

Child.java

copy
123
class Child extends Parent { // properties and methods }

Vamos analisar um exemplo de como a herança funciona no código. Temos uma classe Bird com determinados campos e métodos, e existe uma classe Parrot com seus próprios campos e métodos. Um papagaio é um pássaro, então, logicamente, o papagaio deve herdar da classe Bird:

Aqui está o código da captura de tela, reescrito para melhor legibilidade e clareza:

Bird.java

Bird.java

Parrot.java

Parrot.java

Main.java

Main.java

copy
12345678910111213141516171819
package animals.birds; public class Bird { public String color; public boolean canFly; public int maxAge; public void eat() { System.out.println("The bird is eating"); } public void fly() { if (canFly) { System.out.println("The bird is flying!"); } else { System.out.println("This bird can't fly :("); } } }

Vamos entender o que está acontecendo nessas imagens:

  1. Criamos uma classe Bird, que é a classe pai neste caso. Esta classe possui seus próprios campos e métodos;
  2. Criamos uma classe Parrot, que utiliza a palavra-chave extends para herdar da classe pai Bird. A classe Parrot é uma classe filha e possui seus próprios campos e métodos. Além disso, como classe filha, Parrot herda todos os campos e métodos da classe pai Bird;
  3. Criamos um objeto da classe Parrot no método main e vemos que podemos inicializar os campos de ambas as classes, pai e filha. Primeiro, inicializamos os campos da classe pai Bird e, em seguida, inicializamos os campos da classe filha Parrot. Depois, chamamos os métodos: primeiro os métodos da classe pai e, em seguida, o método da classe filha.

Assim, utilizamos a herança para herdar a classe Bird.

Por Que Fazemos Isso?

Quando temos várias subclasses de Bird, não apenas Parrot, por exemplo, também existem Pigeon e Penguin. Nesse caso, teremos muitos campos duplicados, como boolean canFly. O primeiro benefício da herança é evitar trechos de código duplicados. Além disso, a herança melhora significativamente a legibilidade. Na prática, raramente se trabalha diretamente com a classe Bird e suas subclasses, mas a herança é amplamente utilizada, especialmente com interfaces.

Note

Você aprenderá sobre interfaces na próxima seção deste curso.

Regras de Herança

  • Herdar apenas uma classe. Java não suporta herança múltipla. Uma classe pode ter apenas um pai;

  • Tudo é herdado exceto variáveis e métodos private.

Note

Não é possível herdar de si mesmo!

Anteriormente, foi mencionado que uma subclasse teria acesso a todas as variáveis e métodos da classe pai. No entanto, isso não é totalmente verdade.

Na realidade, todos os métodos e variáveis marcados com o modificador private não são acessíveis à subclasse.

  • Sobrescrever o método da classe pai.

Imagine que herdamos uma classe, mas há certas partes do código herdado que não são desejadas. Suponha que se queira que um método específico funcione de forma diferente da classe pai.

Para sobrescrever um método da classe pai, escreva @Override acima dele:

Parrot.java

Parrot.java

copy
1234
@Override public void eat() { System.out.println("The parrot is eating"); }

No código acima, o método da classe pai foi sobrescrito, e agora, quando este método for chamado a partir da classe filha, o método sobrescrito será executado!

  • Prevenção de Herança.

Se não desejar que sua classe seja herdada, utilize o modificador final antes dela. Por exemplo:

Bird.java

Bird.java

Parrot.java

Parrot.java

copy
123
public final class Bird { // fields and methods }

Dessa forma, ao utilizar a palavra-chave final, proibimos a herança da classe Bird.

Estas são apenas as regras fundamentais e características da herança. É um tema amplo, e será utilizado com muita frequência. Ao longo do curso, outros aspectos da herança serão apresentados e utilizados com mais frequência.

1. Por que precisamos de herança em Java?

2. De quantas classes podemos herdar ao mesmo tempo?

3. Como podemos impedir a herança em Java?

question mark

Por que precisamos de herança em Java?

Select the correct answer

question mark

De quantas classes podemos herdar ao mesmo tempo?

Select the correct answer

question mark

Como podemos impedir a herança em Java?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 1. Capítulo 17

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Seção 1. Capítulo 17
some-alt