В первом уроке этой главы мы рассмотрели интерфейс Phone и его единственную реализацию Nokia3310. Но сила интерфейсов заключается в возможности иметь множество реализаций. Например:
public final class Nexus5 implements MobilePhone {
public void dial(String number) {
System.out.println("Звоним на " + number);
}
public int getChargePercentage() {
return 15;
}
}
Phone first = new Nokia3310("the best serial number");
Phone second = new Nexus5();
first.dial("+7 900 111 22 33");
second.dial("+7 900 999 88 77");
Оба класса реализуют интерфейс Phone и переопределяют методы dial и getChargePercentage по-разному. В этом заключается полиморфизм: программист может взаимодействовать с разными объектами одним и тем же путём, а объекты выполняют при этом разные действия.
Это позволяет разрабатывать гибкий код. Например, взаимодействовать с объектами, находящимися в памяти, в базе данных или в файле одним путём.