3.6. Klasa Any
Język Scala jest językiem obiektowym i zawiera różnego rodzaju klasy, tworzące hierarchię dziedziczenia. Na szczycie hierarchii klas znajduje się Any. Innymi słowy, klasa Any jest nadklasą wszystkich innych klas w tym języku. Klasa Any deklaruje i definiuje kilka metod, które są w związku z tym obecne w każdej innej klasie języka (dziedziczone z Any bądź nadpisane w jakiejś jej podklasie). Any jest klasą abstrakcyjną — nie można utworzyć żadnych jej instancji.
Klasa Any deklaruje następujące abstrakcyjne metody:
- metoda def equals(that: Any): Boolean definiuje relację równości obiektów (obiektu, na którym jest wywołana i obiektu that, przekazanego jako argument),
- metoda def hashCode: Int zwraca kod mieszający obiektu,
- metoda def toString: String zwraca tekstową reprezentację obiektu.
Następujące metody są zadeklarowane za pomocą modyfikatora final jako metody finalne (nie można ich nadpisać w klasach pochodnych) i bezpośrednio lub pośrednio wywołują metodę equals. Zmiana działania metody equals w jakiejś klasie poprzez jej nadpisanie wpływa w związku z tym odpowiednio na działanie tych dwóch metod.
Modyfikator final jest opisany w punkcie 5.15. |
- Metoda final def ==(that: Any): Boolean zwraca wartość logiczną true, jeśli obiekt na którym jest wywołana i obiekt that są sobie równe w sensie metody equals lub jeśli oba są wartościami null.
- Metoda final def !=(that: Any): Boolean zwraca wartość logiczną przeciwną do tej, która jest zwracana przez metodę ==.
Ponadto klasa Any deklaruje następujące dwie metody:
- metoda def isInstanceOf[A]: Boolean służy do sprawdzania, czy obiekt jest instancją typu A,
- metoda def asInstanceOf[A]: A służy do konwersji obiektu na obiekt typu A (jej wykonanie może skutkować wyrzuceniem wyjątku java.lang.ClassCastException).
Parametr A, znajdujący się w nawiasach kwadratowych w powyższych metodach, jest parametrem typu. Parametry typu są opisane w rozdziale 9. Wyjątki są opisane w rozdziale 17. |
Klasa Any ma dwie bezpośrednie podklasy: AnyVal i AnyRef.
Specyfikacja języka Scala opisuje klasę Any oraz jej dwie podklasy — AnyVal i AnyRef — w punkcie 12.1. |