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

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

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

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

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

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.
Теперь увидим, в чем заключается удивительная возможность полиморфизма:

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

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

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

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

  • на Delphi

  • на Java

  • на C++