Поліморфізм

1. Можливість об'єктів з однаковою специфікацією мати різну реалізацію (багато форм)

2. Це використання спільного інтерфейсу для обробки різних типів даних

3. Можливість вибору, який метод викликати

4. Якщо метод отримує клас, то він може працювати і з його нащадками

5. Усі if можна замінити на поліморфізм (дерево з успадкуванням)

6. Може зменшувати розмір програми в рази

7. Який метод визивати вирішується вже під час роботи програми (динамічне зв'язування)

8. Можемо визивати код з класів наслідників

Параметричний поліморфізм

Коли функція приймає батька, а отже і може приймати усіх його нащадків

class Animal {

     public void Sound() {

          System.out.println("Sound");

     }

}

class Cat extends Animal {

     public void Sound() {

          System.out.println("Meow");

     }

}

class Dog extends Animal {

     public void Sound() {

          System.out.println("Wow");

     }

}

class MainClass {

     public static void main(String[] args) {

          Animal animal = new Animal();

          Animal cat = new Cat();

          Animal dog = new Dog();

        

          animal.Sound();

          cat.Sound();

          dog.Sound();

     }

}

Sound

Meow

Wow

// @Override - писати не обов'язково, але вона стає червоною, при не співпадінні назв

2. Перевантаження функцій (Ad hoc поліморфізм)

static int Sum(int a, int b) {

return a + b;

}

static int Sum(int a, int b, int c) {

return a + b + c;

}