![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Является ли интерфейс субклассом класса Object? Какой у интерфейсов корень иерархии и как это можно посмотреть. Спасибо.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
||||
|
||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
mes, не понял, к чему эта ссылка... Возможно я не совсем ясно вопрос задал: есть объект, он является переменной пользовательского типа, скажем MyClass.class, этот класс расширяет класс Object, кот уже ничего не расширяет, и предопределен в пакете java.lang в JDK.
Что же касается интерфейсов - тут мне не совсем все ясно. С одной стороны - это тоже класс, но это не тип. Т.е. логично, что он не расширяет Object. Тогда что он расширяет и расширяет ли вообще... Что есть интерфейс с точки зрения компилятора?.. Это сообщение отредактировал(а) priam220 - 6.1.2011, 13:55 |
|||
|
||||
| nc30 |
|
|||
|
Интересующийся :) ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 24.6.2010 Где: Санкт-Петербург Репутация: 5 Всего: 8 |
Единого корня у них нет. Посмотреть можно в Java API docs: хорошим примером является Collection. Также можно посмотреть, к примеру, Runnable, Comparable и т. п. Вот здесь еще по этой теме. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Я думаю наоборот, не класс, а тип, т.е. неполное описание. На разных продуктах, лежащих на полке магазина, может быть одна наклейка "Скидка 30%". |
|||
|
||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Да, загнялся я немного. Все верно, хоть interface и тип и компилится он в .class, но к иерархии Object'a он не имеет никакого отношения. Кроме того, получается, что интерфейсы не имеют общего корня, т.е. не наследуются от единого корня. Так же все вроде?..
COVD, мне кажется пример, не очень удачный. Зачем работу со скидкой помещать в интерфейс? Мне кажется это общее свойство, просто у кого то сейчас это 0, у кого то 30. И если есть Product класс, то проще всего там же определить и методы по работе со скидкой... |
|||
|
||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Но если все так, то тогда не могу выбрать нужное:
|
|||
|
||||
| Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: нет Всего: 11 |
-------------------- ![]() |
|||
|
||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Christoph, Все уже просмотрено. И не раз...
Я думаю, что в тесте ошибка. Там всего 2 пункта. А? |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 1 Всего: 250 |
сорри.. прочитал : "является ли integer объектом".. исправляюсь.. чтоб получить интерфейс нужен объект(инстанция).. создать объект интерфейса нельзя, только класса.. все классы - наследники объектa(класс).. следовательно, зная интерфейс можно получить объект(нужного типа).. только это будет не upcasting по иерархии, а crosscasting.. в общем смотрите instanceof и т.д. Это сообщение отредактировал(а) mes - 8.1.2011, 00:28 |
|||
|
||||
| priam220 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
можно:
вывод:
|
||||
|
|||||
| Christoph |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 667 Регистрация: 23.1.2008 Где: Харьков Репутация: нет Всего: 11 |
это анонимный класс
-------------------- ![]() |
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 5 Всего: 160 |
Нет. Нельзя наследовать интерфейсы от классов. У интерфейсов нет корня иерархии. Единственное надо помнить, что если интерфейс не является прямым потомком другого интерфейса, то в нём неявно будут определены методы класса Object. Короче, вот цитата из JLS
-------------------- |
|||
|
||||
| priam220 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 4.6.2010 Репутация: 7 Всего: 8 |
Christoph, все верно. Так это и называется. Но от класса тут только одно название, как видите (имеется ввиду MyInterface - это интерфейс). И если исходить, что интерфейс - это тип, то какого же типа объект мы получили?
Это сообщение отредактировал(а) priam220 - 7.1.2011, 12:48 |
|||
|
||||
| jk1 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1168 Регистрация: 17.10.2008 Где: Санкт-Петербург Репутация: 40 Всего: 75 |
Посмотрите из чистого любопытства на output компилятора. Там будет MyClass.class и MyClass$1.class. Соответственно мы получаем объект типа MyClass$1. MyClass$1 при этом вполне себе нормальный класс.
И это неправда, как раз нормального названия, которое позволит использовать его из кода, у него нет. Он же анонимный. P.S.: Не бывает объектов интерфейса, честное слово Вам даю) Это сообщение отредактировал(а) jk1 - 7.1.2011, 12:57 -------------------- Opinions are like assholes — everybody has one |
||||
|
|||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |