Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Princípios da POO: Herança | Poo
Java OOP
course content

Conteúdo do Curso

Java OOP

Java OOP

1. Como Trabalhar com IDE?
2. Poo
3. Interface

book
Princípios da POO: Herança

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 paiBird. A classe Parrot é 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 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, depois, 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 do que na classe pai.

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

Parrot.java

Parrot.java

copy
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 esse método for chamado a partir da classe filha, o método sobrescrito será invocado!

  • 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 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?

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 2. Capítulo 2

Pergunte à IA

expand

Pergunte à IA

ChatGPT

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

course content

Conteúdo do Curso

Java OOP

Java OOP

1. Como Trabalhar com IDE?
2. Poo
3. Interface

book
Princípios da POO: Herança

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 paiBird. A classe Parrot é 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 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, depois, 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 do que na classe pai.

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

Parrot.java

Parrot.java

copy
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 esse método for chamado a partir da classe filha, o método sobrescrito será invocado!

  • 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 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?

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 2. Capítulo 2
some-alt