Witaj Amigo!
- Cześć!
— Dziś zajmiemy się klasą Object.
Spotkałeś się już z tym i wiesz, że Object jest klasą bazową dla wszystkich klas. Nie ma praktycznie żadnych danych, ale istnieje kilka metod.
Dlaczego potrzebuje metod? Czy ktoś tworzy jej obiekty?
- Spójrz na sytuację z tej strony - metody, które ma Object, generalnie mają wszystkie klasy. Te. Programiści Javy wzięli kilka metod, które ich zdaniem powinny mieć wszystkie klasy, i dodali je do klasy Object.
A w połączeniu z polimorfizmem – możliwością nadpisywania metod klasy Object w klasach pochodnych – tworzy to bardzo potężne narzędzie.
Zobaczmy, jakie są te metody:
metoda | Opis |
---|---|
|
Zwraca łańcuchową reprezentację obiektu. |
|
Kilka metod używanych do porównywania obiektów. |
|
Zwraca specjalny obiekt opisujący bieżącą klasę. |
|
Metody kontrolowania dostępu do obiektu z różnych wątków. Kontrola synchronizacji wątków. |
|
Metoda pozwala na „uwolnienie” natywnych zasobów innych niż Java: zamykanie plików, strumieni itp. |
|
Metoda pozwala sklonować obiekt: tworzy duplikat obiektu. |
Metody można podzielić na 6 grup. Z niektórymi już się Państwo zapoznali, z resztą zapoznamy się na kolejnych wykładach.
Nie widzę tu nic przydatnego.
— Amigo! Gdyby te metody nie były ważne, nie byłyby dodawane do absolutnie wszystkich obiektów! Radzę więc przyjrzeć się bliżej, co to jest i dlaczego są potrzebne. Jeśli wydaje ci się, że nie są one ważne, oznacza to, że czegoś nie zrozumiałeś lub nie zrozumiałeś poprawnie.
- OK. Będę uważnie słuchał.
- Zacznijmy od metody toString();
Ta metoda pozwala uzyskać tekstowy opis dowolnego obiektu. Jego implementacja w klasie Object jest bardzo prosta:
return getClass().getName() + "@" + Integer.toHexString(hashCode());
getClass() i hashCode() są również metodami klasy Object.
Oto standardowy wynik wywołania takiej metody
java.lang.Object@12F456
A jaki jest pożytek z takiego opisu?
- Z takiego opisu można poznać klasę obiektu, na którym została wywołana ta metoda. Możesz także rozróżniać obiekty - różne obiekty odpowiadają różnym numerom po symbolu @.
Ale wartość tej metody jest inna. Tę metodę można przesłonić w dowolnej klasie i zwrócić bardziej odpowiedni lub bardziej szczegółowy opis obiektu.
Ale to nie wszystko. Dzięki temu, że dla każdego obiektu można uzyskać jego reprezentację tekstową, w Javie udało się zaimplementować obsługę „dodawania” napisów z obiektami.
Tutaj spójrz:
Kod | Co naprawdę się dzieje |
---|---|
|
|
|
|
|
|
Tak, używam go cały czas. Zwłaszcza gdy piszę program lub szukam w nim błędów. Przydatna metoda
GO TO FULL VERSION