Назад к вопросам
Junior
71
questionbank

Что такое наследование и полиморфизм в ссылочных типах данных?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Наследование – это механизм, позволяющий одному классу (классу-наследнику, дочернему классу) принимать свойства и поведение другого класса (базового класса, родительского класса). Это способствует повторному использованию кода и созданию иерархий классов.

Полиморфизм – это способность объектов разных классов реагировать на одно и то же сообщение (вызов метода) по-разному, в зависимости от их конкретного типа. В контексте наследования, это часто проявляется через переопределение методов базового класса в классе-наследнике.

Пример (Java):

// Базовый класс
class Animal {
    public void makeSound() {
        System.out.println("Животное издает звук");
    }
}

// Класс-наследник
class Dog extends Animal {
    @Override // Переопределение метода
    public void makeSound() {
        System.out.println("Гав!");
    }
}

// Класс-наследник
class Cat extends Animal {
    @Override // Переопределение метода
    public void makeSound() {
        System.out.println("Мяу!");
    }
}

class Main {
    public static void main(String[] args) {
        Animal myDog = new Dog(); // Объект Dog, но ссылка на тип Animal
        Animal myCat = new Cat(); // Объект Cat, но ссылка на тип Animal

        myDog.makeSound(); // Вызывается метод Dog
        myCat.makeSound(); // Вызывается метод Cat
    }
}

В данном примере:

  • Наследование: Class Dog и Cat наследуют от Animal.
  • Полиморфизм: Переменные myDog и myCat ссылаются на объекты Dog и Cat соответственно, хотя имеют тип Animal. При вызове makeSound() выполняется метод класса объекта, а не типа ссылки.