Introducción a la sobrescritura de métodos y la recursión

Entrada/Salida y Streams en Java

Alex Liu

Software Development Engineer

Definir una clase base

  • La clase Animal representa un 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/Salida y Streams en Java

Entender inheritance-extends

// Usa `extends` para crear una subclase de `Animal` llamada `Dog`
class Dog extends Animal {
    void bark() {System.out.println("Bark");}
}
public static void main(String[] args) {
    Dog d = new Dog(); // Crea una nueva instancia de Dog que extiende Animal
    d.makeSound();
    d.bark();
}
  • Imprime ambos sonidos, uno por línea:
Animal sound
Bark
Entrada/Salida y Streams en Java

Sobrescritura de métodos en Java

class Cat extends Animal {
    @Override // Usa `@Override` para sobrescribir el comportamiento de `.makeSound()`
    void makeSound() {
        System.out.println("Meow");
    }
}
public static void main(String[] args) {
    Cat c = new Cat(); // Crea una nueva instancia de Cat que extiende Animal
    c.makeSound(); // Llama al método sobrescrito `makeSound()`
}
Meow
Entrada/Salida y Streams en Java

Entender la recursión

  • Un método que se llama a sí mismo para resolver un problema
  • Requiere un caso base para evitar recursión 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/Salida y Streams en Java

Ejemplo de recursión

  • Ejemplo de uso
    public static void main(String[] args) {
      countdown(5);
    }
    
  • La llamada recursiva se detiene al llegar al caso base, que es 0
    5
    4
    3
    2
    1
    
Entrada/Salida y Streams en Java

Resumen

  • extends habilita la herencia

  • @Override modifica el comportamiento heredado

  • Recursion divide problemas en pasos más pequeños

    • El caso base evita la recursión infinita
Entrada/Salida y Streams en Java

¡Vamos a practicar!

Entrada/Salida y Streams en Java

Preparing Video For Download...