русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Класс Object


Дата добавления: 2015-07-09; просмотров: 646; Нарушение авторских прав


На вершине иерархии классов находится класс Object. Ссылочная переменная типа Object может обращаться к объекту любого другого класса, кроме того, переменная типа Object может указывать на любой массив, так как массивы реализуются как классы. В классе Object определен набор методов, который наследуется всеми классами. Следует отметить два метода: equals() и toString(). Метод equals() при сравнении двух объектов возвращает истину, если объекты эквивалентны, и ложь – в противном случае. Если требуется сравнивать объекты класса, созданного программистом, то этот метод необходимо переопределять в этом классе. Метод toString() возвращает строку с описанием объекта в виде:

getClass().getName() + '@' +

Integer.toHexString(hashCode())

Метод вызывается автоматически, когда объект выводится методами println(), print() и некоторыми другими.

Метод hashCode() переопределен, как правило, в каждом классе Java и возвращает число, являющееся уникальным идентификатором объекта, зависящем в большинстве случаев только от значения объекта. Метод hashCode() возвращает хэш-код объекта, который вычисляется по принципу – различные по содержанию объекты одного и того же типа имеют различные хэш-коды, с другой стороны, принято соглашение “все равные по значению объекты одного типа имеют одинаковые хэш-коды”. При создании классов также рекомендуется переопределять методы hashCode() и toString(), чтобы адаптировать их действия для создаваемого типа.

 

/* пример # 9 : переопределение методов equals() и

toString() : Point.java */

class Point {

protected byte b;

protected String str;

public Point(byte n, String s) {

b = n;

str = s;

}

public Point() {

this((byte)0, "NoName");

}

public boolean equals(Object obj) {

if (obj instanceof Point)

return (this.b == ((Point) obj).b) &&



(str.equals(((Point) obj).str));

return false;

}

public String toString() {

return getClass().getName() + "@"

+ " name=" + str + " b=" + b;

}

}

class PointZ extends Point{

short s = 100;

}

 

Метод equals() переопределяется для класса Point таким образом, чтобы убедиться в том, что полученный объект является объектом типа Point или одним из его наследников, а также сравнить содержимое полей b и str, соответственно у вызывающего и передаваемого объектов. Метод toString() переопределен таким образом, что кроме стандартной информации о пакете, в котором находится класс Point, и самого имени класса, выводит значения полей объекта, вызвавшего этот метод, вместо хэш-кода, как это делается в классе Object. Следует обратить внимание на вызов одного конструктора из другого с передачей ему параметров, а также на преобразование значения типа int к типу byte, так как данное преобразование не выполняется по умолчанию из-за возможной потери информации.

 

/* пример # 10 : иллюстрация работы методов equals()

и toSt ing() r : PointDemo.java */

public class PointDemo {

public static void ain(Stri args) { m ng[]

Point p1 = new Point((byte) 1, "Петров");

Point p2 = new Point((byte) 1, "Петров");

PointZ p3 = new PointZ();

Point p4 = new Point();

System.out.println(p1.equals(p2));

System.out.println(p1.equals(p3));

System.out.println(p4.equals(p3));

System.out.println(p3.equals(p4));

System.out.println(p1.toString());

}

}

 

В результате выполнения данного кода будет выведено следующее:

 

true

false

true

true

com.mypack.Point@ name=Петров b=1

 

Переопределенный таким образом метод equals() позволяет сравнивать объекты суперкласса с объектами подклассов, но только по тем полям, которые являются общими.

 


 

СТРОКИ

 

Системная библиотека Java содержит классы String и StringBuffer, поддерживающие работу со строками и определенные в пакете java.lang. Эти классы объявлены как final, что означает невозможность создания собственных порожденных классов со свойствами строки.

 



<== предыдущая лекция | следующая лекция ==>
Полиморфизм и расширяемость | Класс String


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.095 сек.