Полиморфизм является одной из ключевых концепций в объектно-ориентированном программировании (ООП), и он полностью поддерживается в Java. Слово "полиморфизм" происходит из двух греческих слов: "поли", что означает много, и "морф", что означает форму. Таким образом, полиморфизм означает возможность принимать много форм.
В контексте Java, полиморфизм означает способность метода выполнять разные задачи в зависимости от объекта. Конкретнее, метод может быть переопределен в подклассе, тем самым изменяя его поведение. Это дает возможность обращаться с объектами разных классов, как если бы они были объектами базового класса, обладая одновременно специфичным для каждого подкласса поведением.
Вот простой пример полиморфизма в Java:
class Shape {
void draw() {
System.out.println("Drawing a shape");
}
}
class Circle extends Shape {
void draw() {
System.out.println("Drawing a circle");
}
}
class TestPolymorphism {
public static void main(String[] args){
Shape s;
s = new Shape();
s.draw(); //Выводит: Drawing a shape
s = new Circle();
s.draw(); //Выводит: Drawing a circle
}
В этом примере draw()
- это полиморфный метод. Сначала он вызывается для объекта типа Shape
, затем он вызывается для объекта типа Circle
. В результате получаем разный вывод в зависимости от типа объекта.
Использование полиморфизма позволяет делать код более гибким и масштабируемым. Мы можем легко дополнить код новыми классами и методами, не затрагивая существующий код. Также полиморфизм способствует повышению безопасности кода, поскольку мы можем ограничить доступ к деталям реализации класса, используя полиморфные методы.