Microsoft Word кл программирование на Java 2020 Зорина docx



Pdf көрінісі
бет32/65
Дата17.10.2023
өлшемі3,23 Mb.
#117230
түріРеферат
1   ...   28   29   30   31   32   33   34   35   ...   65
Байланысты:
Лекции

3.7
 
Использование полиморфных ссылок для сортировки и поиска 
Ссылка на объект может ссылаться только на объект своего же класса, или на 
объект любого класса, связанного с ним наследованием. Например, если класс 
Holiday 
используется для создания класса под названием 
Christmas
, то ссылка 
на объект 
Holiday 
можно использовать, чтобы ссылаться на объект 
Christmas

Ассоциация с дочерним объектом родительской ссылки считается 
расширяющим тип преобразованием (
upcasting
), и может быть выполнена с 
помощью простого присваивания. 
Назначение родительскому объекту дочерней ссылки также является 
допустимым (
downcast
), но считается сужающим преобразованием и должно быть 
выполнено с использованием операции преобразования типов. Расширяющее 
преобразование является наиболее полезным. Тип объекта, на который ссылаются, а 
не тип ссылки, определяет, какой метод будет вызывается
Предположим класс 
Holiday
имеет метод, называемый 
celebrate
, и класс 
Christmas
переопределяет его.Теперь рассмотрим следующий вызов: 
day.celebrate(); 
Если 
day
ссылается на объект 
Holiday
, он вызывает версию 
celebrate
для 
Holiday
; если он ссылается на объект 
Christmas
, то вызывается версия 
Christmas
. Имя интерфейса 
Speaker
может быть использовано как тип 


65 
ссылочной переменной объекта 
current
. Ссылка 
current
ссылка может быть 
использована, чтобы ссылаться на объект любого класса, который реализует 
интерфейс 
Speaker
. Версия метода 
speak()
что следующая строка вызывает 
зависимость от типа объекта, который является ссылкой на 
current

current.speak(); 
Предположим, что два класса, 
Philosopher
и 
Student
, оба реализуют 
интерфейс 
Speaker
, обеспечивая предоставление различных версий метода 
speak()
. В следующем коде, первый вызов 
speak
вызывает одну версию, а второй 
вызывает другую версию: 
Speaker guest = new Philospher(); 
guest.speak(); 
guest = new Student(); 
guest.speak(); 


Достарыңызбен бөлісу:
1   ...   28   29   30   31   32   33   34   35   ...   65




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет