Назад к вопросам
Junior
108
questionbank
В чем разница между наследованием и полиморфизмом?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Наследование - это механизм, позволяющий классу (потомок, подкласс) наследовать поля и методы другого класса (родитель, суперкласс). Это способствует повторному использованию кода.
Полиморфизм - это возможность использовать один и тот же интерфейс для представления разных базовых форм. В контексте Java, это означает, что переменная ссылочного типа может ссылаться на объект своего собственного типа или на объект любого из своих подтипов. Различают полиморфизм времени компиляции (перегрузка методов) и полиморфизм времени выполнения (переопределение методов).
Главное отличие:
- Наследование определяет отношения между классами (родитель-потомок) и позволяет повторно использовать код.
- Полиморфизм позволяет обращаться к различным объектам через общий интерфейс, выполняя соответствующий метод в зависимости от фактического типа объекта во время выполнения.
Пример полиморфизма времени выполнения:
class Animal {
public void sound() {
System.out.println("Животное издает звук");
}
}
class Dog extends Animal {
@Override
public void sound() {
System.out.println("Гав-гав");
}
}
class Cat extends Animal {
@Override
public void sound() {
System.out.println("Мяу-мяу");
}
}
public class Main {
public static void main(String[] args) {
Animal myDog = new Dog(); // Полиморфизм: переменная типа Animal ссылается на объект Dog
Animal myCat = new Cat(); // Полиморфизм: переменная типа Animal ссылается на объект Cat
myDog.sound(); // Вызывается метод sound() из класса Dog
myCat.sound(); // Вызывается метод sound() из класса Cat
}
}