Sobes.tech
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
    }
}