Języki i techniki programowania
Ćwiczenia 3
Dziedziczenie
Autor: Marcin Orchel Klasa abstrakcyjna
Klasa abstrakcyjna to taka, że nie możemy tworzyć obiektów tej klasy, możemy jednak dziedziczyć po tej klasie.
Jeśli klasa ma co najmniej jedna metodę abstrakcyjną, a więc nie zdefiniowaną w tej klasie, to klasa jest abstrakcyjna.
W Javie dodaje się wtedy słowo kluczowe abstract przed nazwą klasy.
W C++ nie jest konieczne dodawanie tego słowa.
W C++ aby danej metody nie definiować należy na końcu deklaracji metody dodać = 0;.
Metodami niedefiniowanymi mogą być tylko i wyłącznie metody wirtualne. Co to są za metody będzie przedstawione w późniejszej częsci. Metoda wirtualna, niedefiniowana w klasie nazywa się metodą czysto wirtualną (pure virtual).
Dziedziczenie
W Javie po jednej klasie może dziedziczyć tylko jedna klasa – jednokrotne dziedziczenie. Klasa może implementować wiele interfejsów, interfejsy mogą być dziedziczone między sobą wielokrotnie.
Przykład:
interace interface1 {
}
interace interface2 {
}
interace interface3 extends interface1, interface2 {
}
class class1 implements interface1, interface2 { }
Dziedziczenie z trzema poziomami
Klasa Car -> Fiat -> Punto W przypadku uruchomienia
Punto punto;
punto.startEngine();
Jeśli metoda startEngine jest zdefiniowana w klasie Punto to ona zostanie uruchomiona.
Jeśli nie jest zdefiniowana w klasie Punto, a jest zdefiniowana w klasie Car i Fiat, to zostanie uruchomiona metoda startEngine() z klasy Fiat.
W przypadku uruchomienia:
void f(Car & car) {
car.startEngine();
}
Punto punto;
f(punto);