Jason. Cała informatyka w jednym miejscu!

Mogliście ujrzeć w ostatnich artykułach poruszenie jednego z kolejnych tematów jakim jest klasa "Any" w języku Kotlin. Poświęcimy niniejszy artykuł na nieco bardziej szczegółowe wyjaśnienie tego tematu. Zapraszam do środka!

"ANY" W JĘZYKU KOTLIN ODPOWIADA ZA WSZYSTKIE INNE KLASY

Na początek najprostsza rzecz do opanowania. "Any" to jest nic innego jak klasa "matka" wszystkich pozostałych klas. Odpowiednikiem w Javie jest "Object" i to powinno niektórym rozjaśnić umysł o co chodzi. Jak możecie zdawać sobie sprawę, to oznacza z kolei, że każda klasa bez wyjątku staję się klasą pochodną klasy "Any". To jest fakt! Pokażę teraz pewne detale dotyczące "Any" w języku Kotlin.

DZIEDZICZENIE ZA KULISAMI

Jak już opisywałem jakiś czas temu, dziedziczenie w języku Kotlin polega na wprowadzeniu znaku dwukropka po nazwie naszej klasy, podaniu bezbłędnie nazwy klasy bazowej i pary nawiasów okrągłych (a w środku nich dodatkowo parametry, jeśli są konieczne). Przypomnę zapis kodowy:

class Rectangle : Shape() {
	
}

"Any" w języku Kotlin jest dziedziczone przez każdą klasę po kryjomu, nawet gdy nie zdefiniujemy tego w sposób jawny. Czyli każda nowo tworzona klasa bez jakiegokolwiek dziedziczenia od innej klasy, w rzeczywistości przyjmuje taką postać:

class NewClass : Any() {
	
}

efektem czego każda klasa czy tego chce, czy nie, jest klasą pochodną klasy "Any". Jakie to przynosi skutki i jak je możemy wykorzystać?

CO POTRAFI "JAKIKOLWIEK"?

Klasa "Any" w języku Kotlin (tak samo jak "Object" w Javie) udostępnia całej reszcie kilka metod, które mamy prawo przesłonić implementując niestandardowe zachowanie. Przybliżę Wam jedną z nich, choć "Any" posiada trochę więcej.

TOSTRING

Metoda "toString" zwracająca łańcuch znaków przydaje się do przesłaniania literału, zastępując nic niemówiący ciąg na własne dane i tym sposobem przekazując cenne informacje o samej klasie. Na przykład możemy wstawić wartości danych składowych celem porównywania z innymi obiektami, testowania lub debugowania. Co ciekawe, nie trzeba jej wywoływać bezpośrednio jak każdą inną metodę z obiektu, tylko wystarczy podać jego nazwę do funkcji "println".

Popatrzmy na przykład. Mamy punkt w dwuwymiarowym układzie współrzędnych i moglibyśmy chcieć, aby obiekt sam z siebie dostarczał informacji na temat odciętej i rzędnej. Przy użyciu danych składowych dla osi X i Y, możemy wpłynąć na prezentację wartości metody "toString", na przykład tak:

open class Point(tx : Int, ty : Int) {
	open var x = tx
	open var y = ty

	override fun toString(): String {
		return "($x, $y)"
	}
}

lub jeszcze prościej zamieniając na funkcję jednowyrażeniową:

override fun toString() = "($x, $y)"

Jaki to przyniesie efekt? Tworzymy sobie obiekt, przypisujemy wartości do konstruktora, wywołujemy funkcję "println", wstawiamy za parametr samą nazwę obiektu i oto naszym oczom ukazuje się ustawiony przez nas literał znakowy zawarty w zmodyfikowanej wersji metody "toString".

Klasa "Any" w języku Kotlin

Klasa "Any" w języku Kotlin to "matka wszystkich innych klas". Każda klasa u której nie zdefiniowano klasy bazowej do dziedziczenia, odziedzicza domyślnie od klasy "Any".


Artykuł o klasie "Any" dobiegł końca. Pamiętajcie że domyślnie, kompilator sam automatycznie przypisuje dziedziczenie każdej nowo tworzonej klasy od klasy "Any", jeśli nie określimy tego samodzielnie.

PODOBNE ARTYKUŁY