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 omówiłem wczoraj jeśli ominęliście. Zaprezentuję wyjaśnienie i od razu przesłanianie metody o nazwie "toString". Co to konkretnie jest?

PRZESŁANIANIE I WYJAŚNIENIE METODY "TOSTRING"

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" 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 tutaj. 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.

KOD ŹRÓDŁOWY I PRZESŁANIANIE METODY "TOSTRING"

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" 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".


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