Introdução a sobrescrita de métodos e recursão

Entrada/Saída e Streams em Java

Alex Liu

Software Development Engineer

Definindo uma classe base

  • A classe Animal representa um animal genérico
    class Animal {
      void makeSound() {
          System.out.println("Animal sound");
      }
      public static void main(String[] args) {
          Animal a = new Animal();
          a.makeSound(); // Output: Animal sound
      }
    }
    
Animal sound
Entrada/Saída e Streams em Java

Entendendo inheritance - extends

// Use `extends` para criar uma subclasse de `Animal` chamada `Dog`
class Dog extends Animal {
    void bark() {System.out.println("Bark");}
}
public static void main(String[] args) {
    Dog d = new Dog(); // Cria uma nova instância de Dog, que estende Animal
    d.makeSound();
    d.bark();
}
  • Imprima ambos os sons, linha a linha:
Animal sound
Bark
Entrada/Saída e Streams em Java

Sobrescrevendo métodos em Java

class Cat extends Animal {
    @Override // Use `@Override` para sobrescrever o comportamento de `.makeSound()`
    void makeSound() {
        System.out.println("Meow");
    }
}
public static void main(String[] args) {
    Cat c = new Cat(); // Cria uma nova instância de Cat, que estende Animal
    c.makeSound(); // Chama o método sobrescrito `makeSound()`
}
Meow
Entrada/Saída e Streams em Java

Entendendo recursão

  • Um método chama a si mesmo para resolver um problema
  • Requer um caso base para evitar recursão infinita
public class RecursionExample {
    static void countdown(int n) {
        // Base case
        if (n == 0) return; 
        System.out.println(n);
        // Recursive call
        countdown(n - 1); 
    }
}
Entrada/Saída e Streams em Java

Exemplo de recursão

  • Exemplo de uso
    public static void main(String[] args) {
      countdown(5);
    }
    
  • As chamadas recursivas param ao chegar no caso base, que é 0
    5
    4
    3
    2
    1
    
Entrada/Saída e Streams em Java

Resumo

  • extends habilita herança

  • @Override altera o comportamento herdado

  • Recursion divide problemas em etapas menores

    • Caso base evita recursão infinita
Entrada/Saída e Streams em Java

Vamos praticar!

Entrada/Saída e Streams em Java

Preparing Video For Download...