Программирование на JAVA

Навигация

Лекция 1. Что такое Java? История создания

Лекция 2. Основы объектно-ориентированного программирования

Лекция 3. Лексика языка

Лекция 4. Типы данных

Лекция 5. Имена. Пакеты

Лекция 6. Объявление классов

Лекция 7. Преобразование типов

Лекция 8. Объектная модель в Java

Лекция 9. Массивы

Лекция 10. Операторы и структура кода. Исключения

Лекция 11. Пакет java.awt

Лекция 12. Потоки выполнения. Синхронизация

Лекция 13. Пакет java.lang

Лекция 14. Пакет java.util

Лекция 15. Пакет java.io

Лекция 16. Введение в сетевые протоколы

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

Используя оператор instanceof, можно узнать, от какого класса про­изошел объект. Этот оператор имеет два аргумента. Слева указывается ссылка на объект, а справа - имя типа, на совместимость с которым про­веряется объект. Например:

Parent р = new Child(); // проверяем переменную р типа Parent // на совместимость с типом Child print(p instanceof Child);

Результатом будет true. Таким образом, оператор instanceof опирается не на тип ссылки, а на свойства объекта, на который она ссылается. Но этот оператор возвращает истинное значение не только для того типа, от которо­го был порожден объект. Добавим к уже объявленным классам еще один:

// Объявляем новый класс и наследуем

// его от класса Child

class ChildOfChild extends Child {}

Теперь заведем переменную нового типа:

Parent р = new ChildOfChildO; print(p instanceof Child);

В первой строке объявляется переменная типа Parent, которая иници­ализируется ссылкой на объект, порожденный от ChildOfChild. Во второй строке оператор instanceof анализирует совместимость ссылки типа Parent с классом Child, причем задействованный объект не порожден ни от перво­го, ни от второго класса. Тем не менее, оператор вернет true, поскольку класс, от которого этот объект порожден, наследуется от Child.

Добавим еще один класс:

class Child2 extends Parent { }

И снова объявим переменную типа Parent:

Parent p=newChild(); print(p instanceof Child); print(p instanceof Child2);

Переменная p имеет тип Parent, а значит, может ссылаться на объек­ты типа Child или Child2. Оператор instanceof помогает разобраться в си­туации:

true false

Для ссылки, равной null, оператор instanceof всегда вернет значение false.

С изучением свойств объектной модели Java мы будем возвращаться к алгоритму работы оператора instanceof.

Операторы сравнения = и != проверяют равенство (или неравен­ство) объектных величин именно по ссылке. Однако часто требуется альтернативное сравнение - по значению. Сравнение по значению имеет дело с понятием состояние объекта. Сам смысл этого выраже­ния рассматривается в ООП, что же касается реализации в Java, то со­стояние объекта хранится в его полях. При сравнении по