Princípios de Herança em POO
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 pai ou superclasse;
- A classe criada com base na classe pai é chamada de 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
123class 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 do screenshot, reescrito para melhor legibilidade e clareza:
Bird.java
Parrot.java
Main.java
12345678910111213141516171819package 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:
- Criamos uma classe
Bird, que é a classe pai neste caso. Esta classe possui seus próprios campos e métodos; - Criamos uma classe
Parrot, que utiliza a palavra-chaveextendspara herdar da classe paiBird. A classeParroté uma classe filha e possui seus próprios campos e métodos. Além disso, como classe filha,Parrotherda todos os campos e métodos da classe paiBird; - Criamos um objeto da classe
Parrotno métodomaine vemos que podemos inicializar os campos de ambas as classes, pai e filha. Primeiro, inicializamos os campos da classe paiBirde, em seguida, inicializamos os campos da classe filhaParrot. 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, isso 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.
Nota
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.
Nota
Você não pode 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.
Vamos imaginar que herdamos uma classe, mas há certas partes do código herdado que não nos agradam. Suponha que queremos que um método específico funcione de maneira diferente da classe pai.
Para sobrescrever um método da classe pai, escreva @Override acima dele:
Parrot.java
1234@Override public void eat() { System.out.println("The parrot is eating"); }
No código acima, sobrescrevemos o método da classe pai, e agora, quando este método for chamado a partir da classe filha, o método sobrescrito será invocado!
- Prevenção de Herança.
Se não deseja que ninguém herde sua classe, utilize o modificador final antes dela.
Por exemplo:
Bird.java
Parrot.java
123public 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 você irá utilizá-lo com muita frequência. Ao longo do curso, você se familiarizará com outros aspectos da herança e os utilizará 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?
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain how method overriding works in inheritance?
What is the difference between private and public fields in inheritance?
Why can't Java support multiple inheritance?
Awesome!
Completion rate improved to 4.76
Princípios de Herança em POO
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 pai ou superclasse;
- A classe criada com base na classe pai é chamada de 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
123class 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 do screenshot, reescrito para melhor legibilidade e clareza:
Bird.java
Parrot.java
Main.java
12345678910111213141516171819package 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:
- Criamos uma classe
Bird, que é a classe pai neste caso. Esta classe possui seus próprios campos e métodos; - Criamos uma classe
Parrot, que utiliza a palavra-chaveextendspara herdar da classe paiBird. A classeParroté uma classe filha e possui seus próprios campos e métodos. Além disso, como classe filha,Parrotherda todos os campos e métodos da classe paiBird; - Criamos um objeto da classe
Parrotno métodomaine vemos que podemos inicializar os campos de ambas as classes, pai e filha. Primeiro, inicializamos os campos da classe paiBirde, em seguida, inicializamos os campos da classe filhaParrot. 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, isso 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.
Nota
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.
Nota
Você não pode 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.
Vamos imaginar que herdamos uma classe, mas há certas partes do código herdado que não nos agradam. Suponha que queremos que um método específico funcione de maneira diferente da classe pai.
Para sobrescrever um método da classe pai, escreva @Override acima dele:
Parrot.java
1234@Override public void eat() { System.out.println("The parrot is eating"); }
No código acima, sobrescrevemos o método da classe pai, e agora, quando este método for chamado a partir da classe filha, o método sobrescrito será invocado!
- Prevenção de Herança.
Se não deseja que ninguém herde sua classe, utilize o modificador final antes dela.
Por exemplo:
Bird.java
Parrot.java
123public 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 você irá utilizá-lo com muita frequência. Ao longo do curso, você se familiarizará com outros aspectos da herança e os utilizará 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?
Obrigado pelo seu feedback!