Wiedząc z poprzedniego rozdziału, czym są klasy, do czego służą, oraz jak je tworzyć, możemy poznać bardzo ważne dla języków obiektowych zagadnienie, jakim jest dziedziczenie.
Dziedziczenie pozwala na tworzenie hierarchii klas, które posiadają wspólne cechy. Dzięki dziedziczeniu, możemy korzystać z bardzo potężnego narzędzia, jakim jest polimorfizm, czyli traktowania obiektów pewnej klasy jako obiektów innej klasy.
Tematem tego rozdziału są dziedziczenie i polimorfizm. Dokładnie sobie o nich opowiemy, a także o wielu związanych z nimi zagadnieniach. Dowiemy się m. in.:
- czym są dziedziczenie, polimorfizm, a także method overriding,
- jak rozszerzać klasy i jakie są limity liczby rozszerzanych klas,
- które pola i metody się dziedziczy, a których nie,
- do czego służy modyfikator protected i jakie ma cechy wspólne z modyfikatorem o domyślnym dostępie (tzn. gdy nie zastosujemy żadnego modyfikatora dostępu),
- jak na dziedziczenie i dostęp do pól i metod wpływają wszystkie poznane modyfikatory dostępu,
- jak korzystać z konstruktorów klas bazowych,
- do czego służy słowo kluczowe super,
- do czego służy rzutowanie typów i jak się z niego korzysta,
- czym jest @Override i do czego służy,
- jakie są różnice pomiędzy poznanym już overloadingiem (przeładowaniem) metod a overridingiem (nadpisywaniem) metod,
- czym jest specjalna klasa Object,
- do czego służą klasy i metody abstrakcyjne,
- jakie właściwości mają klasy i metody final,
- jakie są wady i zalety dziedziczenia.
Skoro z poprzedniego rozdziału wiemy już, czym są pakiety klas w języku Java, będziemy je od teraz czasem stosować np. do rozdzielania przykładów z kolejnych podrozdziałów. Jeżeli nie wiesz, bądź nie pamiętasz, czym są pakiety, zajrzyj na koniec rozdziału o klasach.