Dziedziczenie ma miejsce, gdy „klasa” pochodzi od istniejącej „klasy”. Więc jeśli masz Person
klasę, to masz Student
klasę, która się rozszerza Person
, Student
dziedziczy wszystko, co Person
ma. 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
, Student
nie 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 read
metodę i masz Student
rozszerzenie 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 Person
plik 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 p
to 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.