Назад к вопросам
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
    }
}