5. Dziedziczenie klas - extends
W programowaniu ZO bardzo duży nacisk jest położony na kompozycje oraz łatwość rozwoju programu w dalszym czasie. Często tworząc projekt wybieramy podstawę, a dopiero później tworzymy produkty, które tą podstawę wypełniają w większym lub mniejszym stopniu.
W tym momencie potrzebujemy dziedziczenia klas. Co to jest dziedziczenie, pewnie każdy wie w normalnym życiu, jest to na przykład dostanie w spadku majątku po śmierci dziadka, ojca lub kogoś innego z rodziny lub nabywanie genów ojca/matki w ciele dziecka.
Dokładnie jak powyżej dziedziczenie w programowaniu działa na tej samej podstawie, z ta różnicą, że klasy mogą odziedziczać metody od rodzica oraz zmienne.
Dla przykładu wyobraźmy sobie, że mamy projekt firmy 'Mineralka', która zajmuje się produkowaniem wody gazowanej oraz nie gazowanej. Najpierw stwórzmy podstawę dla każdego napoju do wyprodukowania (klasa Butelka), później dwie pod klasy będą dziedziczyły metody klasy Butelka, ale tylko te, które są im potrzebne.
internal function Butelka () {
//pusty konstruktor
}
internal function dodaj_gaz() {
//kod na dodanie gazu do wody
}
internal function dodaj_mineralow() {
//kod na minerały
}
internal function zakrec_butelke() {
//kod na zakręcanie butelki
}
}
Teraz stwórzmy 2 klasy, które dziedziczą funkcje z Butelka klasy, woda gazowana:
dodaj_gaz();
zakrec_butelke();
}
Oraz woda nie gazowana:
class NieGazowana extends Butelka {
dodaj_mineraly();
zakrec_butelke();
}
Zauważ, że dzieci klasy Butelka mogą wykorzystywać jedną, zero lub wiele metod w klasie rodzica.
Dlaczego jest to dobre rozwiązanie?
Jeśli firma 'Mineralka' zachciała by stworzyć nowy produkt wody gazowanej ze zdrowotnymi minerałami, wtedy potrzebowała by tylko stworzyć jedna subklasę, która wyglądałaby następująco:
dodaj_gaz();
dodaj_mineraly();
zakrec_butelke();
}
Ranga: Administrator serwisu Punktów: 0