Класс Object и его методы
Хотя мы можем создать обычный класс, который не является наследником, но фактически
все классы наследуют от класса Object. Все остальные классы, даже те, которые мы добавляем в
свой проект, являются неявно производными от класса Object. Поэтому все типы и классы могут
реализовать те методы, которые определены в классе Object. Рассмотрим эти методы.
toString
Метод toString служит для получения представления данного объекта в виде строки. При
попытке вывести строковое представления какого-нибудь объекта, как правило, будет выводиться
полное имя класса. Например:
Book b1 = new Book("Война и мир", "Л. Н. Толстой", 1863);
System.out.println(b1.toString());
//
будет
выводить,
что-то
наподобие
bookstore.Book@4aa298b7
Полученное мной значение (в данном случае bookstore.Book@4aa298b7) вряд ли может
служить хорошим строковым описанием объекта. Поэтому метод toString() нередко
переопределяют. Например:
class Book{
//...........................
public String toString(){
return "Книга '" + name + "' (автор " + author + ")";
}
}
Метод hashCode
Метод hashCode позволяет задать некоторое числовое значение, которое будет
соответствовать данному объекту или его хэш-код. По данному числу, например, можно
сравнивать объекты.
Например, выведем представление вышеопределенного объекта:
Book b1 = new Book("Война и мир", "Л. Н. Толстой", 1863);
System.out.println(b1.hashCode()); // выведет число 1252169911
Но мы можем задать свой алгоритм определения хэш-кода объекта:
class Book{
public int hashCode(){
return 10 * this.name.hashCode() +
5 * author.hashCode() +
10*year;
}
}
Получение типа объекта и метод getClass
Метод getClass позволяет получить тип данного объекта:
Book b1 = new Book("Война и мир", "Л. Н. Толстой", 1863);
System.out.println(b1.getClass()); // выведет class bookstore.Book
Метод equals
Метод equals сравнивает два объекта на равенство:
class Book{
//................
public boolean equals(Object obj){
if (!(obj instanceof Book)) return false;
Book b = (Book)obj;
return (this.name == b.name && this.author==b.author);
}
}
Метод equals принимает в качестве параметр объект любого типа, который мы затем
приводим к текущему, если они являются объектами одного класса.
Оператор instanceof позволяет выяснить, является ли переданный в качестве параметра
объект объектом определенного класса, в данном случае класса Book. Так как если объекты
принадлежат к разным классам, то их сравнение не имеет смысла, и возвращается значение false.
Затем сравниваем по названиям и именам авторов. Если они совпадают, возвращаем true, что
будет говорить, что объекты равны.
Do'stlaringiz bilan baham: |