Carregando...

Herança em Java

Crie um tipo filho com extends para usar um metodo escrito no pai. Coloque horn em Car para imprimir beep. Escreva class Truck extends Car. Em Yard.java, construa um Truck e chame t.horn(). Compile com javac Yard.java e execute java Yard. A tela deve mostrar beep. Uma segunda demo tambem constroi um Car simples para voce ver que o pai ainda funciona depois do filho. Deixe super para a pagina seguinte. Nao reescreva horn em Truck nesta pagina — sobrescrita vem depois.

Um filho mantem um metodo do pai

A pagina paths nomeou lugares com Paths.get. Esta pagina comeca um modulo novo: uma classe pode ser filha de outra. Abra um arquivo didatico chamado Yard.java. Mantenha o nome publico da classe Yard para combinar com o arquivo. Apague demos de rota Route sobrando, escritores Store, scanners Reader e qualquer Scanner de teclado. O programa nao deve esperar digitacao. Voce nao precisa de linha import nesta licao.
Acima da classe publica declare um tipo pai package-private:
class Car {
Dentro de Car escreva um metodo de instancia void horn() que imprima beep:
System.out.println("beep");
Depois declare o filho:
class Truck extends Car {
Mantenha o corpo de Truck vazio nesta pagina. O filho nao reescreve horn. Chaves vazias bastam para dizer que Truck e um tipo de Car.
Dentro de Yard.main construa um truck e chame o metodo herdado:
Truck t = new Truck();
t.horn();
A chamada funciona porque extends Car liga Truck a Car. Voce nao copiou horn para dentro de Truck.

Yard Truck extends Car horn beep

java
class Car {
    void horn() {
        System.out.println("beep");
    }
}

class Truck extends Car {
}

public class Yard {
    public static void main(String[] args) {
        Truck t = new Truck();
        t.horn();
    }
}

Na pasta que guarda Yard.java, rode javac Yard.java. Quando parenteses, chaves e ponto e virgula batem, javac nao imprime linha propria. Depois rode java Yard — nao java Yard.java. Tire o sufixo .java do comando de execucao. So ha uma classe publica neste arquivo, entao o nome combina com Yard. Os tipos auxiliares Car e Truck ficam sem public nesta forma iniciante. Tres classes publicas em um arquivo faria javac recusar — guarde a regra da pagina de classes.
A tela mostra beep. Percorra a execucao uma vez. Java comeca em Yard.main. new Truck() constrói um objeto truck. t.horn() acha horn no pai Car pela heranca. O metodo imprime beep. Se javac disser que nao acha horn em Truck, a linha extends Car falta ou esta errada — coloque de volta. Se vir note.txt ou impressao de caminho, sobra de Route ainda esta rodando — mude para java Yard. Se o terminal esperar digitacao, sobra de Scanner de teclado ainda esta no arquivo — apague.
Escreva extends com cuidado. Virgula ou palavra implements errada nao e esta licao. Heranca aqui e a palavra-chave extends entre nomes de filho e pai. O nome do filho vem primeiro: Truck extends Car, nao o contrario.
Nao escreva super nesta pagina. Chamar o construtor do pai com super e a proxima licao. Tambem nao escreva um segundo horn dentro de Truck; a historia de sobrescrita vem depois. Hoje o filho fica vazio e ainda usa o metodo do pai. Esse corpo vazio e ensino de proposito, nao erro para “consertar” copiando horn para Truck.

📊 Parent and child on this page

Piece Role
Car parent type that owns horn
Truck child type via extends Car
Yard public starter with main
horn prints beep; written only on Car

O pai ainda funciona sozinho

Um segundo programa mantem o mesmo Car, o mesmo Truck extends Car vazio e a mesma Yard publica. Dentro de main construa um Car e um Truck e chame horn em cada um.

Yard Car and Truck both horn

java
class Car {
    void horn() {
        System.out.println("beep");
    }
}

class Truck extends Car {
}

public class Yard {
    public static void main(String[] args) {
        Car c = new Car();
        Truck t = new Truck();
        c.horn();
        t.horn();
    }
}

Compile com javac Yard.java, depois rode java Yard. A tela mostra beep, depois beep de novo. A primeira linha vem do Car simples. A segunda do Truck que herdou horn. Fazer um filho nao apagou nem quebrou o tipo pai. Os dois objetos podem chamar o mesmo corpo de metodo escrito uma vez em Car. Voce ainda constroi cada objeto com new; a linha extends nao cria truck automaticamente.
Esse contraste e o ponto de controle. Heranca acrescenta um caminho filho a um metodo existente. Voce nao precisa remover o pai. Se tirar extends Car de Truck, t.horn() nao compila porque Truck deixa de receber horn. Mantenha extends para o filho didatico. Prefira o arquivo de um truck quando quiser um beep quieto. Prefira o de dois objetos quando quiser provar que o pai ainda responde.

Comparado com paths em Route

Na pagina paths, java Route nomeou pastas e arquivos. Nesta pagina, java Yard liga tipos com extends. Guarde arquivos Route so como historia se ainda estiverem perto; rode java Yard para demos de heranca e a tela combinar com a licao.
extends, reuso do metodo pai e corpo filho vazio sao os tokens novos. Voce ja conhece new e metodos de instancia de paginas OOP anteriores. Hoje essas pecas encontram heranca pela primeira vez neste caminho do curso. Mantenha os nomes didaticos Car, Truck e Yard para compilar e rodar ficarem curtos e claros.

O que esta pagina deixa para super

Esta pagina mostra um filho que usa metodo pai sem escrever super. A pagina seguinte introduz super para o filho falar com o pai de proposito, especialmente em construtores. Fique com extends e a chamada herdada a horn aqui. Ainda nao adicione super() como exigencia nestas demos Yard.

Antes de super

Voce pode escrever Truck extends Car, construir um Truck e ver beep de horn. Tambem pode construir um Car simples e ver o pai ainda imprimir beep. Compile Yard.java e rode java Yard para cada demo guardada por vez. O filho ficou vazio e ainda usou o metodo pai. A proxima pagina e super, onde o filho fala mais direto com o pai.
Guarde a demo de um truck para uma chamada herdada clara. Guarde a demo de dois objetos para provar que o pai funciona sozinho. Deixe super fora desta pagina por agora. Esses tres habitos sao o checkpoint antes de seguir. Quando beep aparece de um Truck que nunca escreveu seu proprio horn, a heranca fez o trabalho nesta licao e voce esta pronto para o topico super.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
5
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo