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