"Object" w języku Java to kolejny temat, który już dawno powinien pojawić się na stronie jako brakujący element serii. Przedstawiam garść informacji o tym, czym jest klasa wszystkich klas w Javie 😀!
"OBJECT" W JĘZYKU JAVA TRZEBA ZNAĆ
Czy wiesz, że każda klasa którą tworzysz ZAWSZE jest klasą potomną 😯? Nawet jeżeli nie zdefiniujesz tego w kodzie i stworzysz sobie taką klasę (w domyśle bazową):
class MyClass {
}
to kompilator "cichaczem" dodaje coś od siebie:
class MyClass : Object {
}
Dziedziczenie od klasy "Object" 😳! To dlatego, nazywana jest "klasą wszystkich klas", bo "Object" w języku Java jest tą "prawdziwą" klasą bazową. Jest taka, jak inna klasa - można się na nią powoływać, tworzyć obiekty:
Object myObject = new Object();
tylko, że jako jest to typ danych najbardziej bazowy, raczej na niewiele się zda podczas implementacji w naszych programach. Nie podstawimy do pętli, gdy będziemy chcieli operować na kilku różnych typach danych, bo to jest zbyt niebezpieczne (wysokie ryzyko zgłoszenia wyjątku), a poza tym nieprofesjonalne.
TO NA CO MI WIEDZA NA TEN TEMAT?
O, to jest dobre pytanie 😄! Klasa "Object" w języku Java udostępnia parę metod, które mogą być przesłaniane. Trzy jakie warto znać, to:
"toString" opisywałem w innym materiale i to się bardzo przydaje do definiowania sformatowanej niestandardowej treści w momencie podania zmiennej instancyjnej naszej klasy w metodzie "println" (albo "print"):
MyClass myClass = new MyClass();
System.out.println(myClass);
Zwracam Twoją uwagę - nie ma wywoływania żadnej metody, podana jest sama nazwa zmiennej.
"hashCode" i "equals" to mocno powiązane ze sobą metody, a ich znajomość jest kluczowa podczas definiowania kryterium identyczności (czy też "równości") obiektów pochodzących z Twoich klas, które znajdują się w kolekcji. W telegraficznym skrócie (zachęcając ponownie do przeczytania osobnego wpisu 😅) chodzi o naprowadzenie Javy i podanie informacji na podstawie czego (jakich danych składowych i wyrażeń) ma uznać dwa osobne obiekty jednego typu danych za równe.
Liczby łatwo sobie porównać, łańcuchy znaków też. Ale na przykład układy poziomów? W jaki sposób Java ma wywnioskować, że dwa poziomy są takie same 🤔? Na podstawie czego? To są właśnie metody, które pozwalają to zaprogramować.
Klasa "Object" w języku Java jest klasą bazową wszystkich klas i każda klasa od niej dziedziczy, nawet jeżeli jawnie tego nie zapiszemy!
Krótki artykuł, który mam nadzieję rozwiał parę wątpliwości. Nie musi Cię obchodzić stricte sama klasa "Object" - bardziej znaj metody tej klasy, a zwłaszcza te trzy, które podałem 🙂.