Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> является ли interface объектом, что является родителем интерфейса 
:(
    Опции темы
priam220
Дата 6.1.2011, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Является ли интерфейс субклассом класса Object? Какой у интерфейсов корень иерархии и как это можно посмотреть. Спасибо.

PM MAIL   Вверх
mes
Дата 6.1.2011, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250





--------------------
PM MAIL WWW   Вверх
priam220
Дата 6.1.2011, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



mes, не понял, к чему эта ссылка... Возможно я не совсем ясно вопрос задал: есть объект, он является переменной пользовательского типа, скажем MyClass.class, этот класс расширяет класс Object, кот уже ничего не расширяет, и предопределен в пакете java.lang в JDK.
Что же касается интерфейсов - тут мне не совсем все ясно. С одной стороны - это тоже класс, но это не тип. Т.е. логично, что он не расширяет Object. Тогда что он расширяет и расширяет ли вообще... Что есть интерфейс с точки зрения компилятора?.. 


Это сообщение отредактировал(а) priam220 - 6.1.2011, 13:55
PM MAIL   Вверх
nc30
Дата 6.1.2011, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Интересующийся :)
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 24.6.2010
Где: Санкт-Петербург

Репутация: 5
Всего: 8



Цитата(priam220 @ 6.1.2011,  12:21)
Какой у интерфейсов корень иерархии и как это можно посмотреть.

Единого корня у них нет. Посмотреть можно в Java API docs: хорошим примером является Collection. Также можно посмотреть, к примеру, Runnable, Comparable и т. п.

Вот здесь еще по этой теме.
PM MAIL   Вверх
COVD
Дата 6.1.2011, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 26.7.2005

Репутация: 17
Всего: 43



Цитата

это тоже класс, но это не тип

Я думаю наоборот, не класс, а тип, т.е. неполное описание. На разных продуктах, лежащих на полке магазина, может быть одна наклейка "Скидка 30%".    
PM MAIL   Вверх
priam220
Дата 6.1.2011, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Да, загнялся я немного. Все верно, хоть interface и тип и компилится он в .class, но к иерархии Object'a он не имеет никакого отношения. Кроме того, получается, что интерфейсы  не имеют общего корня, т.е. не наследуются от единого корня. Так же все вроде?..

COVD,  мне кажется пример, не очень удачный.  Зачем работу со скидкой помещать в интерфейс? Мне кажется это общее свойство, просто у кого то сейчас это 0, у кого то 30. И если есть Product класс, то проще всего там же определить и методы по работе со скидкой...
PM MAIL   Вверх
priam220
Дата 6.1.2011, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Но если все так, то тогда не могу выбрать нужное:
Цитата

which of the following statements are true?
(choose three)

a. The modifier "abstract" can be used to declare an interface.
b. Interface methods are implicity public, abstract and static.
c. The modifier "abstract" can be used to declare variables inside an interface.
d. There should be at least one method prototype in an interface.
e. All interfaces are extended from the interface java.lang.Interface.
f. All interfaces are implements from the interface java.lang.Interface.
g. A class can be declared to implement multiple interfaces.
h. The keyword "implements" can be used to declare an interface.
i. Interface "is-a" java.lang.Object.

PM MAIL   Вверх
Christoph
Дата 7.1.2011, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: нет
Всего: 11





--------------------
user posted image
PM MAIL ICQ   Вверх
priam220
Дата 7.1.2011, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Christoph, Все уже просмотрено. И не раз...  smile 
Я думаю, что в тесте ошибка. Там всего 2 пункта. А?
PM MAIL   Вверх
mes
Дата 7.1.2011, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(priam220 @  6.1.2011,  12:55 Найти цитируемый пост)
mes, не понял, к чему эта ссылка... 

сорри.. прочитал : "является  ли integer объектом".. 
исправляюсь..

чтоб получить интерфейс нужен объект(инстанция).. создать объект интерфейса нельзя, только класса..
все классы - наследники  объектa(класс).. следовательно, зная интерфейс можно получить объект(нужного типа).. 
только это будет не upcasting по иерархии, а crosscasting.. 
в общем смотрите instanceof и т.д. 

Это сообщение отредактировал(а) mes - 8.1.2011, 00:28


--------------------
PM MAIL WWW   Вверх
priam220
Дата 7.1.2011, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Цитата(mes @  7.1.2011,  01:47 Найти цитируемый пост)
создать объект интерфейса нельзя,


можно:

Код

package test;

import test1.MyInterface;

public class MyClass{    
    int x;
    public static void main(String[] args){
     MyClass mc = new MyClass();
     mc.printer().doSomth();
    }

    public  MyInterface printer()
    {
        return new MyInterface(){
            public void doSomth(){
                System.out.println("hello");
            }
        };
    }
}



вывод:
Код

hello

PM MAIL   Вверх
Christoph
Дата 7.1.2011, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 667
Регистрация: 23.1.2008
Где: Харьков

Репутация: нет
Всего: 11



это анонимный класс


--------------------
user posted image
PM MAIL ICQ   Вверх
kemiisto
Дата 7.1.2011, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 5
Всего: 160



Цитата(priam220 @  6.1.2011,  10:21 Найти цитируемый пост)
Является ли интерфейс субклассом класса Object?

Нет. Нельзя наследовать интерфейсы от классов.

Цитата(priam220 @  6.1.2011,  10:21 Найти цитируемый пост)
Какой у интерфейсов корень иерархии и как это можно посмотреть.

У интерфейсов нет корня иерархии. Единственное надо помнить, что если интерфейс не является прямым потомком другого интерфейса, то в нём неявно будут определены методы класса Object. Короче, вот цитата из JLS
Цитата

9.2 Interface Members

The members of an interface are:

  • Those members declared in the interface.
  • Those members inherited from direct superinterfaces.
  • If an interface has no direct superinterfaces, then the interface implicitly declares a public abstract member method m with signature s, return type r, and throws clause t corresponding to each public instance method m with signature s, return type r, and throws clause t declared in Object, unless a method with the same signature, same return type, and a compatible throws clause is explicitly declared by the interface. It is a compile-time error if the interface explicitly declares such a method m in the case where m is declared to be final in Object.




--------------------
PM MAIL WWW GTalk Jabber   Вверх
priam220
Дата 7.1.2011, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 4.6.2010

Репутация: 7
Всего: 8



Christoph,  все верно. Так это и называется. Но от класса тут только одно название, как видите (имеется ввиду MyInterface - это интерфейс). И если исходить, что интерфейс - это тип, то какого же типа объект мы получили?



Это сообщение отредактировал(а) priam220 - 7.1.2011, 12:48
PM MAIL   Вверх
jk1
Дата 7.1.2011, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 40
Всего: 75



Цитата

Christoph,  все верно. Так это и называется. Но от класса тут только одно название, как видите (имеется ввиду MyInterface - это интерфейс). И если исходить, что интерфейс - это тип, то какого же типа объект мы получили?


Посмотрите из чистого любопытства на 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
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0701 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.