Java. Урок 24. Полиморфизм

Уроки для начинающих   31 Январь 2013  Автор статьи:  

В данной статье мы рассмотрим полиморфизм. Он представляет собой один из краеугольных камней ООП. Суть полиморфизма заключается в том, что вы можете использовать наследников, как родителей. При этом, если в классе-наследнике был переопределен какой — то метод, то вызовется он.
Рассмотрим простой пример. Пусть у нас есть некоторый класс Shape(фигура), в котором есть только один метод рисовать. Очевидно, что в классе Shape он ничего делать не будет, потому что не понятно, что собственно говоря надо отрисовать, какую фигуру:

1
2
3
4
5
public class Shape {
    public void draw() {
       //ничего не делаем
    }
}

После этого мы создаем различные классы-наследники: Square (квадрат), Сircle (круг) и Triangle:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Square extends Shape {
    public void draw() {
        System.out.println("Квадрат");
    }
}

public class Сircle extends Shape {
    public void draw() {
        System.out.println("Круг");
    }
}

public class Triangle extends Shape {
    public void draw() {
        System.out.println("Треугольник");
    }
}

Как вы могли заметить в наследниках у нас переопределен метод draw.
Теперь увидим, в чем заключается удивительная возможность полиморфизма:

1
2
3
4
5
Shape[] a = new Shape[]{new Shape(), new Triangle(), new Square(), new Сircle()};

for(int i = 0; i < a.length; i++) {
    a[i].draw();
}

Выведет:
Треугольник
Квадрат
Круг
Таким образом каждый класс наследник вызвал именно свой метод draw, вместо того, чтобы вызвать пустой метод draw из класса Shape. В следующих уроках мы поймем зачем может понадобится такой подход.

  • Little Fish

    в самом конце опечатка — понадобится

    • http://cybern.ru/ lordrp

      Спасибо, исправили.

Научиться программировать

  • на Delphi

  • на Java

  • на C++