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