— Привіт, Аміго!
— Привіт!
— Сьогодні ми вивчатимемо Object.
Ти вже зустрічався з ним і знаєш, що Object – базовий клас для всіх класів. У нього немає жодних даних, але є кілька методів.
— А навіщо йому методи? Хіба хтось створює його об'єкти?
— Поглянь на ситуацію з такого боку – методи, які є у Object’а, є взагалі у всіх класів. Тобто розробники Java обрали кілька методів, які, на їхню думку, мають бути у всіх класів і додали їх до класу Object.
А у поєднанні з поліморфізмом – можливістю перевизначати методи класу Object у класах-спадкоємцях – це породжує дуже потужний інструмент.
Давай поглянемо, що це за методи:
Метод | Опис |
---|---|
|
Повертає рядкове представлення об'єкта |
|
Пара методів, які використовуються для порівняння об'єктів. |
|
Повертає спеціальний об'єкт, який описує поточний клас. |
|
Методи контролю доступу до об'єкта з різних потоків. Управління синхронізацією потоків. |
|
Метод дозволяє «звільнити» рідні не-Java ресурси: закрити файли, потоки і т.д. |
|
Метод дозволяє клонувати об'єкт: створює дублікат об'єкта. |
Методи можна розбити на 6 груп. З деякими ти вже знайомий, а з рештою ми познайомимося у найближчих лекціях.
— Щось я не бачу тут чогось корисного.
— Але якби ці методи не були важливими, їх би не додали всім об'єктам! Тож раджу тобі уважніше розібратися – що це таке і навіщо вони потрібні. Якщо тобі здається, що вони не важливі, є вірогідність, що ти щось зрозумів неправильно.
— Ок. Я буду уважно слухати.
— Почнемо з методу toString();
Цей метод дозволяє отримати текстовий опис будь-якого об'єкта. Реалізація його у класі Object дуже проста:
return getClass().getName() + "@" + Integer.toHexString(hashCode());
getClass() і hashCode() – це теж методи класу Object.
Ось стандартний результат виклику такого методу
java.lang.Object@12F456
— І в чому ж користь такого опису?
— З такого опису можна дізнатися клас об'єкта, у якого викликали даний метод. А також можна розрізняти об'єкти – різним об'єктам відповідають різні цифри, що йдуть після символу @.
Але цінність цього методу в іншому. Даний метод можна перевизначити в будь-якому класі і повертати більш потрібний або детальніший опис об'єкта.
Але це ще не все. Завдяки тому, що для кожного об'єкта можна отримати його текстове зображення, в Java можна було реалізувати підтримку «складання» рядків з об'єктами.
Ось дивись:
Код | Що відбувається насправді |
---|---|
|
|
|
|
|
|
— Так, я завжди цим користуюся. Особливо коли пишу програму чи шукаю у ній помилки. Корисний метод
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ