Junior
Каква е разликата между наследяване и полиморфизъм?
sobes.tech AI
Отговор от 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
}
}