Dziedziczenie ma miejsce, gdy „klasa” pochodzi od istniejącej „klasy”. Więc jeśli masz Personklasę, to masz Studentklasę, która się rozszerza Person, Student dziedziczy wszystko, co Personma. Istnieje kilka szczegółów dotyczących modyfikatorów dostępu, które umieszczasz w polach / metodach w Person, ale to jest podstawowa idea. Na przykład, jeśli masz włączone pole prywatne Person, Studentnie zobaczy go, ponieważ jego pola prywatne i prywatne nie są widoczne dla podklas.
Polimorfizm dotyczy tego, w jaki sposób program decyduje, jakich metod powinien używać, w zależności od tego, jaki typ rzeczy ma. Jeśli masz a Person, który ma readmetodę i masz Studentrozszerzenie Person, które ma własną implementację read, to, która metoda zostanie wywołana, jest określana przez środowisko wykonawcze, w zależności od tego, czy masz Personplik Student. To trochę skomplikowane, ale jeśli zrobisz coś takiego
Person p = new Student();
p.read();
wywoływana jest metoda odczytu Studenta . Taki jest polimorfizm w akcji. Możesz wykonać to zadanie, ponieważ a Student to a Person , ale środowisko wykonawcze jest wystarczająco inteligentne, aby wiedzieć, że rzeczywisty typ pto Student .
Pamiętaj, że szczegóły różnią się w zależności od języka. Możesz na przykład dziedziczyć w javascript, ale jest to zupełnie inne niż sposób, w jaki działa w Javie.