|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
13.11.2012, 02:14 | #1 |
Регистрация: 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! В общем я в ауте Помогите расколоть орешек знания |
13.11.2012, 02:33 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
1)код отработает только в том случае если приведение возможно.
иначе выпадет в исключение. 2)со вторым случаем так же, мы передаем Object, который является корнем любого объекта, и далее во время каста мы уже узнаем реализует интерфейс или нет. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Приведение типов к 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 |