Junior
Какво е наследяване и полиморфизъм при референтните типове данни?
sobes.tech AI
Отговор от 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
}
}
В този пример:
- Наследяване: Класовете
DogиCatнаследяват отAnimal. - Полиморфизъм: Променливите
myDogиmyCatсе отнасят към обектиDogиCatсъответно, въпреки че имат типAnimal. При извикване наmakeSound()се изпълнява методът на обекта, а не на типа на препратката.