Спадкування - це коли клас походить від існуючого класу. Отже, якщо у вас є Person
клас, то у вас є Student
клас, який розширюється Person
, Student
успадковує всі речі, які Person
має. Є деякі деталі навколо модифікаторів доступу, які ви вводите на поля / методи в Person, але це основна ідея. Наприклад, якщо у вас увімкнено приватне поле Person
, воно Student
не відображатиметься, оскільки його приватні та приватні поля не видно підкласам.
Поліморфізм стосується того, як програма вирішує, які методи вона повинна використовувати, залежно від того, який тип речі він має. Якщо у вас є a Person
, який має read
метод, і у вас є a, Student
який розширюється Person
, який має власну реалізацію read
, який метод викликається, визначається для вас часом виконання, залежно від того, чи є у вас Person
або a Student
. Це стає трохи хитро, але якщо ви робите щось подібне
Person p = new Student();
p.read();
метод зчитування на Стьюденті викликається. Ось поліморфізм у дії. Ви можете виконати це завдання, тому що a Student
є Person
, але час виконання досить розумний, щоб знати, що фактичний тип Studentp
є .
Зауважте, що деталі відрізняються між мовами. Наприклад, ви можете зробити спадщину в JavaScript, але це зовсім інше, ніж це працює в Java.