JavaRush /Курсы /Модуль 2. Java Core /Методы класса Object

Методы класса Object

Модуль 2. Java Core
9 уровень , 0 лекция
Открыта
Все методы класса Object, метод toString() - 1

— Привет, Амиго!

— Привет!

— Сегодня мы будем изучать класс Object.
Ты уже сталкивался с ним, и знаешь, что Object – базовый класс для всех классов. У него практически нет никаких данных, но есть несколько методов.

— А зачем ему методы? Разве кто-то создает его объекты?

— Посмотри на ситуацию с такой стороны – методы, которые есть у Object’а, есть вообще у всех классов. Т.е. разработчики Java отобрали несколько методов, которые, по их мнению, должны быть у всех классов и добавили их в класс Object.

А в сочетании с полиморфизмом – возможностью переопределять методы класса Object в классах-наследниках – это порождает очень мощный инструмент.

Давай посмотрим, что же это за методы:

Метод Описание
public String toString()
Возвращает строковое представление объекта.
public native int hashCode()
public boolean equals(Object obj)
Пара методов, которые используются для сравнения объектов.
public final native Class getClass()
Возвращает специальный объект, который описывает текущий класс.
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout) 
public final void wait(long timeout, intnanos) 
public final void wait()
Методы для контроля доступа к объекту из различных нитей. Управление синхронизацией нитей.
protected void finalize()
Метод позволяет «освободить» родные не-Java ресурсы: закрыть файлы, потоки и т.д.
protected native Object clone()
Метод позволяет клонировать объект: создает дубликат объекта.

Методы можно разбить на 6 групп. С некоторыми ты уже знаком, а с остальными мы познакомимся в ближайших лекциях.

— Что-то не вижу тут ничего полезного.

— Амиго! Если бы эти методы были не важны, их бы не добавили абсолютно всем объектам! Так что советую тебе более внимательно разобраться – что это такое и зачем они нужны. Если тебе кажется, что они не важны, значит, ты что-то не понял или понял не правильно.

— Ок. Я буду внимательно слушать.

— Начнем с метода toString();

Этот метод позволяет получить текстовое описание любого объекта. Реализация его в классе Object очень простая:

return getClass().getName() + "@" + Integer.toHexString(hashCode());

getClass() и hashCode() – это тоже методы класса Object.
Вот стандартный результат вызова такого метода

java.lang.Object@12F456

— И в чем же польза такого описания?

— Из такого описания можно узнать класс объекта, у которого вызвали данный метод. А также можно различать объекты – разным объектам соответствуют разные цифры, идущие после символа @.

Но ценность данного метода в другом. Данный метод можно переопределить в любом классе и возвращать более нужное или более детальное описание объекта.

Но и это еще не все. Благодаря тому, что для каждого объекта можно получить его текстовое представление, в Java можно было реализовать поддержку «сложения» строк с объектами.
Вот смотри:

Код Что происходит на самом деле
int age = 18;
System.out.println("Age is " + age);

String s = String.valueOf(18);
String result = "Age is " + s;
System.out.println(result);
Student st = new Student("Vasya");
System.out.println("Student is " + st);

Student st = new Student("Vasya");
String result = "Student is " + st.toString();
System.out.println(result);
Car car = new Porsche();
System.out.println("My car is " + car);

Car car = new Porsche();
String result = "My car is " + car.toString();
System.out.println(result);

— Да, я постоянно этим пользуюсь. Особенно когда пишу программу или ищу в ней ошибки. Полезный метод

Комментарии (4)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Сергей Уровень 115
12 февраля 2025
В Java (и не только) правильнее говорить потоки (threads), а не нити. Термин "нить" иногда используется в русскоязычной литературе, но официальная документация и большинство разработчиков используют термин поток
9 октября 2023
Это самый частый вопрос на собесах
Андрей Уровень 10
18 декабря 2024
Это какой?
Александр Уровень 109
24 октября 2025
назовите методы класса Object