Полиморфизм - это концепция объектно-ориентированного программирования, которая позволяет использовать один интерфейс для представления различных классов. Он позволяет объектам разных классов обрабатываться одинаково в контексте использования общего интерфейса.
В Java полиморфизм может быть достигнут с помощью перегрузки методов, наследования и интерфейсов.
Перегрузка методов (Method Overloading) - это процесс создания нескольких методов с одним и тем же именем в одном классе, но с различными параметрами. При вызове метода компилятор выбирает подходящую версию метода, основываясь на типах переданных аргументов.
public class Calculator {
public int add(int a, int b) {
return a + b;
}
public double add(double a, double b) {
return a + b;
}
}
Здесь мы определили две версии метода add, одну для целочисленных значений и другую для дробных чисел. Когда мы вызываем метод add, компилятор выбирает подходящую версию метода, основываясь на типах переданных аргументов.
Наследование (Inheritance) - это процесс создания нового класса на основе существующего класса, называемого родительским классом. Наследование позволяет создавать иерархии классов, где каждый подкласс наследует свойства и методы от своего родительского класса.
public class Animal {
public void makeSound() {
System.out.println("Animal makes sound");
}
}
public class Dog extends Animal {
public void makeSound() {
System.out.println("Dog barks");
}
}
Здесь мы определили два класса Animal и Dog, где класс Dog является подклассом класса Animal. Класс Dog наследует метод makeSound от класса Animal, но переопределяет его, чтобы предоставить свою собственную реализацию.
Интерфейсы (Interfaces) - это абстрактные классы, которые определяют общие методы и свойства для нескольких классов. Классы, которые реализуют интерфейс, обязательно должны реализовать все его методы.
public interface Drawable {
public void draw();
}
public class Circle implements Drawable {
public void draw() {
System.out.println("Drawing Circle");
}
}
public class Rectangle implements Drawable {
public void draw() {
System.out.println("Drawing Rectangle");
}
}
Здесь мы определили интерфейс Drawable и два класса Circle и Rectangle, которые реализуют этот интерфейс. Оба класса должны реализовать метод draw из интерфейса.
Таким образом, полиморфизм - это концепция объектно-ориентированного программирования, которая позволяет использовать один интерфейс для представления различных классов в Java. Он может быть достигнут с помощью перегрузки методов, наследования и интерфейсов.
1606 вопрос-ответ по Java: https://github.com/DEBAGanov/interview_questions
Tелеграмм канал: https://t.me/DEBAGanov
Мое резюме: https://github.com/DEBAGanov