Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2012, 02:14   #1
Ecclesiastes
 
Регистрация: 25.09.2012
Сообщений: 5
По умолчанию Интерфейсы как типы, приведение типов

Доброй всем ночи!

Я вот вчитываюсь в туториалы Oracle по Java. И я залип на этих двух страницах:
http://docs.oracle.com/javase/tutori...interface.html
http://docs.oracle.com/javase/tutori...aceAsType.html

Залип я конкретно вот на чем:
На первой странице, в месте выбеделенном болдом месте показано, как объект с типом Relatable (А Relatable это интерфейс), приводится к типу RectanglePlus, который имплементирует Relatable.

Ну тут сразу непонятно - а откуда у объектов типа Relatable возьмутся поля width/height и методы getArea? Приведение типов магически их создаст? Но ведь данных в этих полях всеравно не будет? Ведь если какой-то объект относится к классу имплементирующему интерфейс Relatable, то вовсе не обязательно что в нем будут такие данные и метод getarea!

Далее вторая страница:
Там ситуация обратная (в коде что в начале). Объект принадлежаий к типу Object (который является классом) приводится к типу Relatable. Зачем такая манипуляция? Ведь подразумевается (вроде бы) что класс Object имплементирует интерфейс Relatable, тогда зачем два объекта этого класса приводить к типу интерфейса Relatable - там и так должен быть метод isLargerThan!

В общем я в ауте Помогите расколоть орешек знания
Ecclesiastes вне форума Ответить с цитированием
Старый 13.11.2012, 02:33   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

1)код отработает только в том случае если приведение возможно.
иначе выпадет в исключение.
2)со вторым случаем так же, мы передаем Object, который является корнем любого объекта, и далее во время каста мы уже узнаем реализует интерфейс или нет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приведение типов к Delphi Аватар Общие вопросы C/C++ 2 10.08.2011 15:32
приведение типов??? nikozavr C# (си шарп) 1 14.05.2011 22:29
NetUserAdd() приведение типов disaer Общие вопросы C/C++ 2 12.05.2011 08:09
С - приведение типов onewho Общие вопросы C/C++ 3 21.11.2010 00:12
Приведение типов в Qt mike_tihomirov Qt и кроссплатформенное программирование С/С++ 1 19.06.2010 13:14