Назад к вопросам
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()выполняется метод класса объекта, а не типа ссылки.