Вступ до перевизначення методів і рекурсії

Ввід/вивід і потоки в Java

Alex Liu

Software Development Engineer

Визначення базового класу

  • Клас Animal представляє узагальнену тварину
    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
Ввід/вивід і потоки в Java

Розуміння наслідування — extends

// Використайте `extends`, щоб створити підклас `Animal` з назвою `Dog`
class Dog extends Animal {
    void bark() {System.out.println("Bark");}
}
public static void main(String[] args) {
    Dog d = new Dog(); // Створіть новий екземпляр Dog, який наслідує Animal
    d.makeSound();
    d.bark();
}
  • Виведіть обидва звуки пострічково:
Animal sound
Bark
Ввід/вивід і потоки в Java

Перевизначення методів у Java

class Cat extends Animal {
    @Override // Використайте `@Override`, щоб перевизначити поведінку `.makeSound()`
    void makeSound() {
        System.out.println("Meow");
    }
}
public static void main(String[] args) {
    Cat c = new Cat(); // Створіть новий екземпляр Cat, який наслідує Animal
    c.makeSound(); // Викличте перевизначений метод `makeSound()`
}
Meow
Ввід/вивід і потоки в Java

Розуміння рекурсії

  • Метод викликає сам себе для розв'язання задачі
  • Потрібен базовий випадок, щоб уникнути нескінченної рекурсії
public class RecursionExample {
    static void countdown(int n) {
        // Base case
        if (n == 0) return; 
        System.out.println(n);
        // Recursive call
        countdown(n - 1); 
    }
}
Ввід/вивід і потоки в Java

Приклад рекурсії

  • Приклад використання
    public static void main(String[] args) {
      countdown(5);
    }
    
  • Рекурсивні виклики зупиняються, коли досягається базовий випадок 0
    5
    4
    3
    2
    1
    
Ввід/вивід і потоки в Java

Підсумок

  • extends вмикає наслідування

  • @Override змінює успадковану поведінку

  • Recursion розбиває задачі на менші кроки

    • Базовий випадок запобігає нескінченній рекурсії
Ввід/вивід і потоки в Java

Давайте потренуємось!

Ввід/вивід і потоки в Java

Preparing Video For Download...