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.

JAK W DUŻYM SKRÓCIE WYGLĄDA DZIEDZICZENIE W JĘZYKU JAVA?

Jak wspomniałem 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 metod 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.

PRZYKŁAD KODU ŹRÓDŁOWEGO

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 nich 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, tutaj są dodatkowe informacje na ten temat.

Słowo kluczowe "extends" w języku Java

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. Tu znajduje się drugi rozdział dziedziczenia.

PODOBNE ARTYKUŁY