Witam Was ponownie! Zbliża się nieuchronnie koniec "mojego miesiąca" i stopniowe zbieranie plonów swojej ciężkiej pracy z pisania na stronie, aczkolwiek nie ma to wpływu na dalsze redagowanie artykułów. Jak dojdę do wyznaczonego progu, wtedy wszystko wyjaśnię. Na razie, zabieramy się znowu za język Java i za wątek przesłaniania, który opisałem wczoraj jeśli ominęliście. Zaprezentuję wyjaśnienie i od razu przesłanianie metody o nazwie "toString" w języku Java. Co to konkretnie jest?

PRZESŁANIANIE I WYJAŚNIENIE METODY "TOSTRING" W JĘZYKU JAVA

Metoda "toString" jest jedną z kilku metod należących do "matki wszystkich obiektów" jaką jest klasa "Object". Zwraca ona wartość typu "String" i domyślnie tworzy tak zwany "kod mieszający" (więcej o tym terminie jest napisane tutaj). Na tym etapie wystarczy żebyście wiedzieli, że taki kod mieszający to jest "zlepek" nazwy klasy, znaku "małpki" (@ - ang. "at") oraz unikalnego kodu liczbowego nazywanego "hashCode". Metoda jest automatycznie wywoływana gdy umieścimy nazwę instancji klasy w funkcji "System.out.println". Jak konkretnie to ma wyglądać, to za moment. Tak w telegraficznym skrócie można opisać samą metodę "toString".

No to następne pytanie: czemu potrzebne jest przesłanianie metody? Czemu, gdy jest kiedykolwiek mowa o tej funkcji, to od razu nasuwa się innym na myśl jej przesłanianie? Ponieważ jest to funkcja już istniejąca! W związku z tym, nie definiujemy jej od nowa, tylko ją "ściągamy" z klasy bazowej (jaką jest "Object", nawet gdy nie korzystamy ze słowa "extends") i przystosowujemy jej działanie do naszych potrzeb.

Drążmy temat dalej: dlaczego przesłanianie metody "toString" w języku Java może nam pomóc? Co powinniśmy tam dorzucić i w jaki sposób? Otóż składnia metody "pierwotnej" "toString" wygląda następująco:

public String toString()
{
	return [kod mieszający];
}

Uprościłem zawartość, aby nie rozgrzebywać tematu, którego szczegóły są opisane w innym materiale. Widzimy zatem, że mamy tylko jedną linijkę ze słowem "return". Wniosek z tego jest taki, że możemy dzięki temu zamienić sobie nic niemówiące hasła na odpowiednio sformatowany tekst, który będzie dostarczał jakichś cennych informacji bez wykorzystywania funkcji dodatkowych.

PRZYKŁAD KODU ŹRÓDŁOWEGO

Pozwólcie, ze po raz enty zapoznam Was z przykładowym kodem źródłowym. W przykładzie tym, mamy klasę reprezentującą punkt w dwuwymiarowym układzie współrzędnych. Po utworzeniu instancji i przypisaniu dwóch wartości całkowitych pełniących rolę danych składowych, przesłaniamy metodę "toString", a następnie korzystając z metody "System.out.println" wypisujemy współrzędne bez użycia jakiejkolwiek innej metody, to jest bardzo ważne! Przesłanianie metody "toString" w języku Java tym się charakteryzuje, że ona sama odpowiada za format komunikatu:

KLASA "MAIN"

public class Main
{
	public static void main(String[] args)
	{
		Point pa = new Point(0, 2);
		Point pb = new Point(8, 7);

		System.out.println(pa);
		System.out.println(pb);
	}
}

KLASA "POINT"

public class Point
{
	private int x, y;

	public Point(int x, int y)
	{
		this.x = x;
		this.y = y;
	}

	@Override
	public String toString()
	{
		return "(" + x + ", " + y + ")";
	}
}

Wypisując obiekt w konsoli, standardowo ujrzelibyśmy dziwnie wyglądający kod mieszający. Dzięki przesłonięciu jednej z metod istniejących w klasie bazowej "Object", sformatowaliśmy sobie tekst na postać punktu w układzie współrzędnych. Na tym właśnie polega przesłanianie metody "toString" w języku Java.


Dziękuję za przeczytanie. Od tej pory nie powinno być problemów zarówno w rozumieniu, jak i wykorzystywaniu. Niech to Wam dobrze służy!

PODOBNE ARTYKUŁY