Различие динамического и статического полиморфизма в Java
Понимание разницы между динамическим и статическим полиморфизмом имеет решающее значение в объектно-ориентированном программировании на Java. В этой статье будут представлены упрощенные объяснения и примеры для пояснения этой концепции.
Динамический и статический полиморфизм
Полиморфизм позволяет одному имени метода иметь несколько реализаций в зависимости от тип объекта, вызывающий его. Существует два основных типа полиморфизма:
Перегрузка метода
Перегрузка метода — это форма статического полиморфизма, при которой несколько методы с одинаковым именем существуют в одном классе, но различаются параметрами. При вызове перегруженного метода Java определяет соответствующий метод для вызова на основе количества и типов переданных аргументов.
Пример кода (перегрузка метода):
class Calculation {
void sum(int a, int b) { System.out.println(a b); }
void sum(int a, int b, int c) { System.out.println(a b c); }
public static void main(String[] args) {
Calculation obj = new Calculation();
obj.sum(10, 10, 10); // Output: 30
obj.sum(20, 20); // Output: 40
}
}
Переопределение метода
Переопределение метода — это форма динамического полиморфизма, при которой методы с одинаковым именем и сигнатурой объявляются в разных классах, но имеют общий родительский класс. При вызове переопределенного метода Java определяет вызываемый метод на основе фактического класса объекта во время выполнения.
Пример кода (переопределение метода):
class Animal {
public void move() {
System.out.println("Animals can move");
}
}
class Dog extends Animal {
public void move() {
System.out.println("Dogs can walk and run");
}
}
public class TestDog {
public static void main(String[] args) {
Animal a = new Animal(); // Animal reference and object
Animal b = new Dog(); // Animal reference but Dog object
a.move(); // Output: Animals can move
b.move(); // Output: Dogs can walk and run
}
}
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3