Dziedziczenie klas

 

Dziedziczenie to adopcja wszystkich NIEprywatnych atrybutów i metod klasy nadrzędnej (superclass, ancestor class). Jeśli klasa B dziedziczy od klasy A, to obiekt klasy B jest jednocześnie obiektem klasy A - czyli posiada wszystkie właściwości (atrybuty i metody) zdefiniowane w klasie A. Aby zapisać, że klasa B dziedziczy od klasy B, używamy słowa kluczowego extends w następujący sposób:

class KlasaA {
   atrybutA;

   metodaA() {
      ...
   }
}

class KlasaB extends KlasaA {
   atrybutB;

   metodaB() {
      ...
   }
}

Gdzie klasa B to klasa podrzędna - klasa potomka (ang. descendant class), a klasa A to klasa nadrzędna - klasa przodka (ang. ancestor class).

W obiekcie klasy B są dostępne wszystkie atrybuty i metody zdefiniowane w klasie A oraz atrybuty i metody dostępne w klasie B.

Istnieje możliwość utworzenia klasy C dziedziczącej z klasy B, a następnie klasy D dziedziczącej z klasy C itd. - bez ograniczeń.

Atrybuty oraz metody klasy A mogą być używane w klasie B dokładnie tak, jak w klasie A, albo metody mogą zostać nadpisane (overriden). Nadpisanie polega na zastąpieniu oryginalnego kodu metody nowym kodem. W nowym kodzie metody można wywołać kod oryginalnej metody zdefiniowanej w klasie nadrzędnej - klasie przodka. Aby tego dokonać, należy wywołać oryginalną metodę, dodając przed jej nazwą słowo kluczowe super. - np. tak: super.nazwaOryginalnejMetody(...). Metody nadpisane warto oznaczać adnotacją @Override:

class KlasaA {
   metodaA() {
      ...
   }
}

class KlasaB extends A {
   @Override
   metodaA() {
      ...		// tutaj jest zmodyfikowany kod metody metodaA
      super.metodaA(); // można wywołać oryginalny kod metody metodaA z klasy KlasaA 
      ...
   }
}

 

 

Przykład drzewa hierarchii dziedziczenia klas

 

Na pokazanym wyżej diagramie obiekt klasy SamochódSpalinowy jest jednocześnie obiektem klasy Pojazd, obiektem klasy PojazdKołowy itd.

Czyli w rzeczywistości obiekt klasy SamochódSpalinowy jest "wyposażony" w następujący zestaw atrybutów i metod:

 

 

Więcej przykładów dziedziczenia:

 

Figura geometryczna - równoległobok, romb, trapez, trójkąt, owal

Elektrownia - turbinowa , fotowoltaiczna

Pracownik - szeregowy, biurowy, kierownik

Łódź - podwodna, żaglowa, motorowa, wiosłowa

Tablica - kredowa, korkowa, cyfrowa, mazakowa

Krzesło - obrotowe, bujane, elektryczne

Komputer - stacjonarny, przenośny, tablet

Konto bankowe - chwilowe, oszczędnościowego, walutowe

Broń - palna, biała, miotająca, rakietowa, chemiczna, jądrowa

Dźwig - szybowy (winda), budowlany + budowlany-stacjonarny, budowlany-mobilny

Wagon - towarowy, pasażerski, techniczny

Rzutnik obrazu - cyfrowy, szpulowy/ze slajdami

Lampa - stojąca, wisząca, abażur

Zwierzę - ssaki, ptaki, gady, płazy

Drzwi - skrzydłowe, suwane, obrotowe

Budynek - jednorodzinny, wieżowiec

 

 

Patrz także: