Jason. Cała informatyka w jednym miejscu!

Zabieramy się znowu za język Java i za wątek przesłaniania, który opisałem wczoraj jeśli ominąłeś(-aś). Kontynuacja poprzedniego wątku zaprezentuje jak można wykorzystać przesłanianie w stosunku do 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 w odrębnym artykule). Na tym etapie wystarczy żebyś wiedział(a), ż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 metodzie "System.out.println" (lub "System.out.print"). 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 metodzie, 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 klasa "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 i w jakich okolicznościach? Co powinniśmy tam dorzucić i w jaki sposób? Otóż składnia wersji "pierwotnej" metody "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 odrębnych metod 😀.

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 wywoływania jakiejkolwiek 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 bez definiowania ani wywoływania jakiejkolwiek innej metody na uboczu. Na tym właśnie polega przesłanianie metody "toString" w języku Java.


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

NASTĘPNY ARTYKUŁ: Rzutowanie typu w języku Java. Wymuszanie typu danych

PODOBNE ARTYKUŁY