Дженерики и параметризованные типы
©NetCracker Technology Corp.
Полиморфизм
© |
NetCracker Technology Corp. |
/ |
Что такое полиморфизм?
.
В самом общем смысле полиморфизм — это свойство языка программирования работать с данными разных типов единообразным способом.
Тип называется полиморфным, если операции над ним применимы к другим типам.
Необходимость полиморфизма связана с
уменьшением количества сущностей, которыми оперирует программист; переиспользование кода;
желанием приблизить модель вычислений на компьютере к более привычной, «естественной» модели мышления.
Вподавляющем большинстве современных языков высокого уровня присутствует та или иная форма полиморфизма.
.
© |
NetCracker Technology Corp. |
/ |
Виды полиморфизма
.
Функция — именованный блок кода, возможно, принимающий некоторые данные извне (параметры/аргументы) и, возможно, возвращающий некоторый результат.
Типы полиморфизма:
ad-hoc (ситуативный) полиморфизм — функция по-разному рабо-
тает с данными разных типов из заранее фиксированного набора;
параметрический полиморфизм — функция работает одинаково с данными произвольных типов;
полиморфизм подтипов (включения) — функция работает одинако-
во с данными типов, являющихся подтипами одного общего супертипа, предоставляющего общий интерфейс.
.
© |
NetCracker Technology Corp. |
/ |
Полиморфизм в Java
.
В Java доступны все виды полиморфизма:
ad-hoc-полиморфизм — перегрузка методов:
public static String toString(long value) { ... } public static String toString(double value) { ... }
полиморфизм подтипов — наследование и иерархия классов:
public class Base { public void method() { ... } } public class Child extends Base {
@Override public void method() { ... }
}
public class Child extends Base { @Override public void method() { ... }
}
параметрический полиморфизм — дженерики и параметризованные классы:
public class List<T> { public T get(int index) { ... } }
public static <T> T getInstance(Class<T> clazz) { ... }
.
© |
NetCracker Technology Corp. |
/ |