Наследование - это когда «класс» происходит от существующего «класса». Итак, если у вас есть Personкласс, то у вас есть Studentкласс, который расширяет Person, Student наследует все, что Personимеет. Есть некоторые подробности относительно модификаторов доступа, которые вы помещаете в поля / методы в Person, но это основная идея. Например, если у вас есть закрытое поле Person, Studentоно не будет отображаться, потому что его закрытые и закрытые поля не видны подклассам.
Полиморфизм имеет дело с тем, как программа решает, какие методы она должна использовать, в зависимости от того, что она имеет. Если у вас есть метод Person, у которого есть readметод, и у вас есть метод, Studentкоторый расширяет Person, который имеет свою собственную реализацию read, то какой метод вызывается, определяется для вас во время выполнения, в зависимости от того, есть ли у вас Personили Student. Это немного сложно, но если вы делаете что-то вроде
Person p = new Student();
p.read();
вызывается метод read для Student . Это полиморфизм в действии. Вы можете сделать это назначение, потому что a Student является a Person , но среда выполнения достаточно умна, чтобы знать, что фактическим типом pявляется Student .
Обратите внимание, что детали различаются для разных языков. Например, вы можете выполнять наследование в javascript, но оно совершенно отличается от того, как оно работает в Java.