„Здрасти, Амиго!“
"Здрасти!"
„Днес ще изучаваме класа Object.
Вече сте го срещали и знаете, че Object е базовият клас за всички класове. Той практически няма данни, но има няколко метода.“
"Защо има нужда от методи? Някой наистина ли създава екземпляри на класа Object?"
„Погледнете го по този начин: методите в класа Object са общи за всички класове. С други думи, създателите на Java идентифицираха няколко метода, които според тях трябва да има всеки клас, и ги добавиха към класа Object.“
„И когато се комбинира с полиморфизъм (способността да се заменят методите на класа Object в производни класове), това се превръща в много мощен инструмент.“
„Нека да видим Howви са тези методи:“
Метод | Описание |
---|---|
|
Връща низово представяне на обекта. |
|
Двойка методи, използвани за сравняване на обекти. |
|
Връща специален обект, който описва текущия клас. |
|
Методи за контролиране на достъпа до обект от различни нишки. За синхронизиране на нишки. |
|
Този метод ви позволява да освобождавате собствени ресурси, различни от Java: затваряне на файлове, потоци и т.н. |
|
Този метод ви позволява да клонирате обект: създава дубликат на обекта. |
"Тези методи могат да бъдат разделени на 6 групи. Вече сте запознати с някои от тях, а с останалите ще се запознаем в следващите уроци."
— По няHowва причина не виждам нищо полезно тук.
„Амиго! Ако тези методи не бяха важни, нямаше да ги добавят към всеки един обект! Затова бих ви посъветвал да погледнете по-внимателно Howво представляват те и защо са необходими. Ако ви се струват маловажни , тогава or не сте разбрали нещо, or нещо не сте разбрали правилно."
"Добре. Ще слушам внимателно."
„Нека започнем с метода toString().
"Този метод ви позволява да получите текстово описание на всеки обект. Неговото внедряване в класа Object е много просто:"
return getClass().getName() + "@" + Integer.toHexString(hashCode());
"getClass() и hashCode() също са методи на клас Object.
Извикването на този метод обикновено води до резултат като този:"
java.lang.Object@12F456
— И Howва е ползата от такова описание?
"Това описание ви позволява да знаете класа на обекта, към който е извикан методът. Можете също така да правите разлика между обекти; различните обекти ще имат различни цифри след символа @."
"Но истинската стойност на този метод е другаде. Този метод може да бъде презаписан във всеки клас, за да върне по-подробно or подходящо описание на обекта."
„Но има още. Тъй като можете да получите текстово представяне на всеки обект, Java ви направи възможно да реализирате поддръжка за „добавяне“ на низове към обекти.
Вижте го:“
Код | Какво наистина се случва |
---|---|
|
|
|
|
|
|
"Да, използвам това редовно. Особено когато пиша програма or търся грешки. Това е полезна операция."
GO TO FULL VERSION