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" (ten termin też wymaga sporego zastrzyku wyjaśnień na skalę całego artykułu). 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". Dodam jeszcze, że jest ona 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 deklarujemy 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óry zostanie odłożony na potem. 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 funkcji, 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