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



         

Объекты и правила работы с ними - часть 3


// Объявляем класс Parent class Parent { }

// Объявляем класс Child и наследуем // его от класса Parent class Child extends Parent { }

Пока нам не нужно определять какие-либо поля или методы. Далее объявим переменную одного типа и проинициализируем ее значением другого типа:

Parent p = new Child();

Теперь переменная типа Parent указывает на объект, порожденный от класса Child.

Над ссылочными значениями можно производить следующие операции:

  • обращение к полям и методам объекта
  • оператор instanceof (возвращает булевское значение)
  • операции сравнения == и != (возвращают булевское значение)
  • оператор приведения типов
  • оператор с условием ? :
  • оператор конкатенации со строкой +

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

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

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

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

// Объявляем новый класс и наследуем // его от класса Child class ChildOfChild extends Child { }

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

Parent p = new ChildOfChild(); print(p instanceof Child);

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

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




Содержание  Назад  Вперед