Czas poruszyć wątek dziedziczenia! Jest to kolejny element stanowiący zakres podstawowego rozumienia języka Java. Dziedziczenie w języku Java to fundament w paradygmacie obiektowym. Na czym on polega? Jak on działa w programie? Jak go dostrzec w kodzie? Spokojnie, jedno pytanie po drugim zostanie tu omówione.

DZIEDZICZENIE W JĘZYKU JAVA

Jak wspomnieliśmy wcześniej, klasa to szablon dla tworzonych obiektów tego typu. Klasa może również rozszerzać o inną klasę będącą wyżej w hierarchii. Chodzi o możliwość "odziedziczania" danych składowych i metod z klasy nadrzędnej bez konieczności duplikowania tych samych funkcji i zmiennych. Poświęcono kilka słów kluczowych dotyczących dziedziczenia, które będziemy rozpatrywać w przyszłych artykułach, a na razie skupimy się na najważniejszym: "extends".

Słowo "extends" (ang. "rozszerza") dodane po podaniu nazwy klasy umożliwia dziedziczenie od innej już istniejącej klasy. W efekcie końcowym, dysponujemy wszystkimi danymi składowymi i metodami znajdującymi się w klasie dziedziczonej objęte modyfikatorem "public" lub "protected" (rzadko stosowany). W Javie, odziedziczanie od wielu klas pod rząd jest niemożliwe! Po słowie "extends" następuje podanie TYLKO JEDNEJ nazwy klasy. W C++ jest dopuszczalny taki manewr, aczkolwiek to nie jest artykuł dotyczący tego języka.

KOD ŹRÓDŁOWY Z DZIEDZICZENIEM

Tyle teorii na początek wystarczy, odłóżmy szczegóły na bok. Oto przykładowy program wykorzystujący banalne dziedziczenie w języku Java:

  • KLASA "Main"
public class Main
{
	public static void main(String[] args)
	{
		Character c = new Character();
		Warrior w = new Warrior(8);

		c.saySomething();
		w.saySomething();
	}
}
  • KLASA "Character"
public class Character
{
	private int level;

	public void setLevel(int level)
	{
		this.level = level;
	}

	public void saySomething()
	{
		System.out.println("Wypowiadam się z klasy " + getClass().getSimpleName() + ". Mam poziom " + level);
	}
}
  • KLASA "Warrior"
public class Warrior extends Character
{
	public Warrior(int level)
	{
		setLevel(level);
	}
}

Trochę koślawy przykład, natomiast pokazuje on, że dziedziczenie metod publicznych powoduje uzyskanie do ich dostępu w klasie dziedziczącej od innej ("saySomething"), zarówno w tej klasie, jak i na zewnątrz niej. Świadczy o tym poprawność wywołania tej samej metody z obu odrębnych klas posiadających wzajemną relację (klasa "Main"). Ciąg "getClass().getSimpleName()" pozwala wyodrębnić nazwę klasy z której ta wiadomość pochodzi dzięki czemu możemy zidentyfikować od kogo ten komunikat przyszedł. W tym konkretnym przykładzie klasa "Character" stanowiąca "szkielet" dla innych przyszłych postaci nie powinna być wykorzystywana do tworzenia instancji o jej typie. Tylko dziedziczenie powinno być dozwolone. Da się coś z tym zrobić? Owszem, ale na tę rzecz przykuję Waszą uwagę w innym artykule.

Dziedziczenie w języku Java za pomocą słowa "extends"

Słowo kluczowe "extends" przeznaczone jest do wyznaczania klasy od której będzie się odbywać dziedziczenie w języku Java.


Na razie kończymy na ten moment, aczkolwiek to jest dopiero wierzchołek góry lodowej.

PODOBNE ARTYKUŁY