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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интерфейсы, Не могу понять 
:(
    Опции темы
GIK
Дата 5.1.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Есть класс который реализует интерфейс, и он реализует доступ к только "своему" методу.
А как же определяется этот метод, метод как интерфейсный?
Например вот такая реализация:
Код

class Client implements Callback{
 public void callback ()
 { 
  System.out.println("Обращение через интерфейс");
   }
 void Min()

  System.out.println("Не возможно обратится через интерфейс");
 }
 }
  class FindAreas {
 public static void main(String args[]) {
   Callback c = new Client(); //Тип Callback класса Client
   
  c.callback(); // Вызвать метов интерфейса класса Client
    //c.Min(); Не возможно вызвать?
  }
}

Здесь вроде как нельзя обратится к методу Min потому что он не является методом интерфейса Callback, а где это указывается не пойму.???
Добавлено @ 13:35
Кстати при нажатии на предварительный просмотр, топ сразу создается?
Наверное это из-за того что переделывается форум......

Это сообщение отредактировал(а) GIK - 5.1.2006, 13:33


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
kashka
Дата 5.1.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 29.11.2004
Где: Wolfenbuettel, Ge rmany

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



потому что метод Min() в интерфейсе не задекларирован, нет его там. Ты же создаешь новый обьект Callback, поетому и методы видешь только те которые у Callback есть.
PM MAIL   Вверх
GIK
Дата 5.1.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Цитата

потому что метод Min() в интерфейсе не задекларирован

А где это указывается?


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
batigoal
Дата 5.1.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

Репутация: 24
Всего: 151



Цитата(GIK @ 5.1.2006, 15:08 Найти цитируемый пост)

А где это указывается?

В объявлении интерфейса Callback. Посмотри его код.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
chief39
Дата 5.1.2006, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 15
Всего: 77




На отфонарном примере:

Код


public interface Emlpoyee {  // работник
    public String getPosition();
}

public interface Citizen {  // гражданин
    public String getPassport();
}

/**
 *  мужик и работает, и гражданин по ходу дела :)
 */
public class Man implements Emlpoyee, Citizen{ 
    public String getPassport() {
        return "EA6578403"; // наобум
    }
    public String getPosition() {
        return "manager";
    }
}

/**  а ребёнок только гражданин  
 * поэтому рассматривать его как работника без толку 
 * поэтому только один интерфейс * 
 */
public class Child implements Citizen{  
    public String getPassport() {
        return "ER6785898"; // наобум
    }
}


public class MyClass{
    public static void main(String[] args) {
        Emlpoyee emp;
        Citizen  cit;
        
        Child child = new Child(); // мужик
        Man man = new Man(); // ребёнок
        
        cit = man;          // рассматриваем мужика как гражданина
        cit.getPassport(); // и вообще, можем делать всё, что интерфейс гражданина разрешает
        
        cit = child;        // рассматриваем ребёнка как гражданина
        cit.getPassport(); // то же самое - чем ребёнок не гражданин
        
        emp = man;          // рассматриваем мужика как работника (он же эмплойи наследовал ;)) 
        man.getPosition(); // и вообще, можем делать всё, что интерфейс работника разрешает
        
        emp = child;       // Фигушки! пусть 8-летний пацан объяснит компилятору что он уже работает :)  
        

        /* ну а потом - у тебя может быть массив детей и мужиков
        ты их по очереди достаёшь из массива, приводишь явно к интерфейсу
        и берёшь их паспорта. И плевать что у мужика ещё что-то есть
        сейчас он для тебя только гражданин        
        */
        
    }
}


ЗЫ: как ты заметил - если реализуешь интерфейс - будь добр все его методы реализовать smile Он ведь лишь говорит что в твоём классе такие методы должны быть smile

Это сообщение отредактировал(а) chief39 - 5.1.2006, 14:46


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
GIK
Дата 5.1.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Цитата

В объявлении интерфейса Callback. Посмотри его код.

Ну спосибо.... Думайте я сам не знеаю что это объявление интерфейса....
Меня ведь смутило что метод callback и метод Min находятся внутри класса Client который реализуется с интерфейсом. Но почему то к callback можно обращатся а к Min нет.
Другое дело если бы название метода было Callback а не callback.
Добавлено @ 14:59
to chief39
Пытаюсь вкурить твой код.


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
LSD
Дата 5.1.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(GIK @ 5.1.2006, 14:59 Найти цитируемый пост)

Меня ведь смутило что метод callback и метод Min находятся внутри класса Client который реализуется с интерфейсом. Но почему то к callback можно обращатся а к Min нет.

Я тебе это уже объяснял, ты привел объект типа Client к типу Callback, соответсвенно ты можешь работать с ним только как с типом Callback (т.е. вызывать методы соответсвующие и т.д.). Интерфейс можно рассматривать как полностью абстрактный класс, от которого твой класс наследует.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
chief39
Дата 5.1.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 15
Всего: 77



Цитата(GIK @ 5.1.2006, 14:59 Найти цитируемый пост)

Пытаюсь вкурить твой код.

Курить вредно, чем я и занимаюсь smile

Смотри... Интерфейс - это внешнее представление какого-то предмета. Если ты готов
соответствовать такому представлению для окружающих - должен обеспечивать всё,
чего от тебя ожидают. То есть для бабушки на вахте - ты не многогранный класс "Академик", а человек с пропуском, в автобусе ты - пассажир, и общаются с тобой как с пассажиром. Ну а ты, будучи академиком, всё равно должен обеспечивать то, что ждут от пассажира. Ты должен предоставлять методы "сесть в автобус", "покинуть автобус", "купить билет", "предьявить билет". Причём у разных людей(классов) что представляют(имплементируют) пассажира(т.е. интерфейс) методы могуть быть реализованны совершенно по разному. например"предъявить билет": академик солидно вытянет билет из дипломата, девушка - из лифчика, воришка - из кармана соседа.
Вот. Когда ты сел в автобус - для автобуса, водителя, кассиров, пассажиров - ты ПАССАЖИР. Они не знают и не должны о том, что ты академик.
Допустим, с тобой едет мужик-с. На самом деле он нач. отдела кадров огромной компании. Он приезжает на работу и директор говорит - надо у какого-то "академика" вызвать метод "нанять на работу". Вобщем академик нужен.
ЭЭЭ!!! - скажем мы. Надо мужику пойти к тому академику и вызвать у него метод "нанять"! Но! мужик ведь не знает что это АКАДЕМИК smile Он видел только ПАССАЖИРА !
Это нам, богам видно кто он на самом деле. А мужик мог и опростоволоситься. Если бы то дворник ехал а не академик. Вызвал бы метод "нанять на работу" или "теорему Ферма доказать", а дворник - ЧЧЧЧё???
А если мы в мозги ему вобьём что надо всех подряд пссажиров надо нанимать на работу как академиков - фигня получится smile
Поэтому будь добр в автобусе относиться к пассажирам только как к пассажирам.
smile

ЗЫ: курю - это я насчёт обычных сигарет. не подумайте чего плохого smile

Это сообщение отредактировал(а) chief39 - 5.1.2006, 16:15


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
kol
Дата 5.1.2006, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



chief39

Вопрос этот не интересовал, но рассказ прочитал с удовольствием smile. Жаль плюс не могу поставить за доходчивое объяснение smile.


PM MAIL   Вверх
batigoal
Дата 5.1.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

Репутация: 24
Всего: 151



Цитата(kol @ 5.1.2006, 19:56 Найти цитируемый пост)

Жаль плюс не могу поставить за доходчивое объяснение

Ну ведь всегда можно попросить модератора smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
chief39
Дата 5.1.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 15
Всего: 77



Лирическое настроение вкупе с плотным обедом творят чудеса smile

Цитата(kol @ 5.1.2006, 18:56 Найти цитируемый пост)

Вопрос этот не интересовал

Тогда я запутался smile Насколько я понимаю LSD вроде ответил почему именно "не можешь". В чём тогда вопрос? И ента... интерфейс Callback покажи. А то непонятно что за тёмная лошадка такая имплементируется и сколько у неё там рогов да копыт.


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
batigoal
Дата 5.1.2006, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


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

Репутация: 24
Всего: 151



Цитата(chief39 @ 5.1.2006, 21:32 Найти цитируемый пост)

Тогда я запутался

Вопрос-то не он задавал, а GIK. smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
chief39
Дата 6.1.2006, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 15
Всего: 77



Цитата(Lamer George @ 5.1.2006, 20:48 Найти цитируемый пост)

Вопрос-то не он задавал, а GIK.

УПЦ! Вот они, последствия плохой экологии и глобального потепления!

kol, пардон за вымогание чужого кода smile
GIK, это... я хоть и сплю, но интерфейс всё равно показывай smile
Lamer George, Дзенькую за плюс и за нажатие кнопки "Раздупл." smile



--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
GIK
Дата 6.1.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Народ, кто нибуть посмотрите 3 вопрса.
Вопросы:
1)Как определить что Min не относится к Callback ?
2)Min определен в пределах класса Client который реализуется с интерфейсом Callback?
3)callback и Callback чем то связаны?

Это сообщение отредактировал(а) GIK - 6.1.2006, 14:31


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
LSD
Дата 6.1.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(GIK @ 6.1.2006, 14:18 Найти цитируемый пост)
1)Как определить что Min не относится к Callback?

Если метод класса имеет такую же сигнатуру, что и метод интерфейса, то он его реализует.

Цитата(GIK @ 6.1.2006, 14:18 Найти цитируемый пост)
2)Min определен в пределах класса Client который реализуется с интерфейсом Callback?

Min определен в пределах класса Client который реализует интерфейс Callback.

Цитата(GIK @ 6.1.2006, 14:18 Найти цитируемый пост)
3)callback и Callback чем то связаны?

Метод callback определен в интерфейсе Callback.

Ты чего, зачет здаешь? smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
GIK
Дата 6.1.2006, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Цитата

Ты чего, зачет здаешь?

Нет, просто, хотел разобратся smile

Наверное я не понимал слова "сигнатура".
Это веть и есть сходство, просто первые буквы разные, большая и маленькая ?




--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Guest
Дата 6.1.2006, 14:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Опубликуй интерфейс Callback smile

1. Если интерфейс Callback определён вот так:
Код

public interface Callback{
       public void Min(); // кстати, считается, что нужно имена методов начинать с маленькой,
                                       // а имена классов и интерфейсов - с большой
       public void callback(); // это метод и с Callback он не пересекается - абсолютно разные имена (заглавная буква)
                                               // а если в классе есть метод с именем ИДЕНТИЧНЫМ имени класса - то это конструктор
                                               // здесь, для всех, кто имплементирует этот интерфейс - это всего лишь метод, как и Min()
}

ТО ОТНОСИТСЯ

Если так:
Код

public interface Callback{
       public void callback();
}
- ТОГДА НЕ ОТНОСИТСЯ!


2. ДА. Он в твоём самом верхнем куске кода. Правда, если интерфейс у тебя описан без Min() - тогда при компиляции ругнётся.
В классе у тебя реализация. Если прочитал мою лирику - то это именно программирование "доставания билетика", конкретного случая. Например из лифчика. smile
Код

void Min(){ 
  System.out.println("Не возможно обратится через интерфейс");
 }


3. Только тем что callback описан в Callback(и, судя по всему, в интерфейсе указан как в моём ответе на вопрос "1").
Если ты о похожести имён - то это абсолютно разные идентификаторы из-за разной первой буквы. Это как "destination" и "promoter", "HellCat" и "DuBaI" - просто разные слова.

PS: приведи код интерфейса!!! А то мы как слепые, которые слона с разных сторон щупают!!! Толчёмся вокруг да около smile

  Вверх
chief39
Дата 6.1.2006, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 15
Всего: 77



Забыл залогиниться smile

Сигнатура - это ИМЯ МЕТОДА с точностью до буковки и учётом регистра + набор параметров(с учётом их порядка следования и типа)

Разница в первой буковке делает эти два названия АБСОЛЮТНО разными идентификаторами


--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
GIK
Дата 6.1.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Ну блин наконец то, то что надо.
Большое спасибо smile
А то втирают мне логику которую я еще понял когда книгу в руки взял.
Но только вот то что сейчас Ты мне привел там нет.
Добавлено @ 14:57
Цитата

Забыл залогиниться

chief39 это был ты.


--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
LSD
Дата 6.1.2006, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Сигнатура это объявление метода: включает в себя название (все идентификаторы в Java регистрозависимые), его аргументы, тип возвращаемого значения, модификаторы доступа, прочие модификаторы.
Считается что метод переопределяет метод определенный в родителе, если:
- оба метода не статические
- метод имеет такое же имя как и у родителя
- метод имеет такие же параметры что и у родителя
- метод возвращает значение того же типа, что и родитель (проверяется компилятором)
- метод не выбрасывает никаких проверяемых исключений, не объявленных в родителе (проверяется компилятором)
- имеет более слабый или такой же модификатор доступа что и родитель (проверяется компилятором)
- родительский метод не private и не final (второе проверяется компилятором)


Цитата(Guest @ 6.1.2006, 14:45 Найти цитируемый пост)

Если прочитал мою лирику - то это именно программирование "доставания билетика", конкретного случая. Например из лифчика.

Я смотрю у кого-то уже весна, началась smile


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
chief39
Дата 6.1.2006, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 15
Всего: 77



Гм... Эккель настаивает на том, что сигнатура - это исключительно название + список параметров(порядок+типы)
И подчёркивает что возвращаемое значение в сигнатуру НЕ входит. Ибо метод может быть вызван
без приваивания резалта переменной и с компилятор не будет знать какой именно метод вызвать если разнятся только типом возвращаемого.
Или здесь имеется в виду сигнатура в другом понимании? Может дока какая-то специальная есть по этим нюансам?

Цитата(LSD @ 6.1.2006, 14:59 Найти цитируемый пост)

Я смотрю у кого-то уже весна, началась smile

У меня круглый год весна smile



--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

PM MAIL   Вверх
Wowa
Дата 11.1.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

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



Т.е. этими строками
Цитата(chief39 @ 5.1.2006, 12:45 Найти цитируемый пост)

        Emlpoyee emp;
        Citizen  cit;
       
        Child child = new Child(); // мужик
        Man man = new Man(); // ребёнок
       
        cit = man;          // рассматриваем мужика как гражданина


мы указываем, интерфейсом какого именно класса должен интерфейс является. Так?
Вот именно этой строкой:
cit = man;

да?
PM WWW   Вверх
LSD
Дата 12.1.2006, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Wowa @ 11.1.2006, 23:19 Найти цитируемый пост)
Т.е. этими строками
....
мы указываем, интерфейсом какого именно класса должен интерфейс является. Так?
Вот именно этой строкой:
cit = man;

да?

Мы присваиваем переменной типа Citizen объект man. И в дальнейщем, по ссылке cit, мы сможем с ним работать как с объектом типа Citizen. Привести переменную к типу можно: (MyType) variable, проверить что переменная приводима к данному типу так: if(variable instanceof MyType).


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
GIK
Дата 12.1.2006, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


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

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



Объясняю свою логику, если что поправте.
Есть классы которые реализуют интерфейс. В интерфейсе можно указать, к примеру, методы, которые должны указыватся в классе обязательно,если он реализует интерфейс.
Если передать ссылку от объекта man, который реализует интерфейс Emlpoyee, и Citizen, переменной интерфейса cit (Citizen), то через cit можно обращатся как через объект man, потому что man реализует интерфейс, которым является cit.



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
LSD
Дата 12.1.2006, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(GIK @ 12.1.2006, 14:23 Найти цитируемый пост)
Есть классы которые реализуют интерфейс. В интерфейсе можно указать, к примеру, методы, которые должны указыватся в классе обязательно,если он реализует интерфейс.

Все верно.

Цитата(GIK @ 12.1.2006, 14:23 Найти цитируемый пост)
Если передать ссылку от объекта man, который реализует интерфейс Emlpoyee, и Citizen, переменной интерфейса cit (Citizen), то через cit можно обращатся как через объект man, потому что man реализует интерфейс, которым является cit.

Вот это я не совсем понял, если под ссылку от объекта имеется в виду присваивание, то да присвоить можно, и именно потому что класс Man реализует Citizen. Иначе была бы ошибка приведения типов.
А вот вторую половину я не понял вообще.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
chief39
Дата 13.1.2006, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


карманная тигра
***


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

Репутация: 15
Всего: 77



Цитата(GIK @ 12.1.2006, 14:23 Найти цитируемый пост)

Если передать ссылку от объекта man, который реализует интерфейс Emlpoyee, и Citizen, переменной интерфейса cit  (Citizen), то через cit можно обращатся как через объект man, потому что man реализует интерфейс, которым является cit.

Можно. Только в более урезанном виде(скорее всего) - в классе man могут быть методы, которые не входят в интерфейс. Но в принципе - всё верно smile Ссылка - это лишь ссылка, указатель в памяти. А тип(Man или Citizen) - важен лишь для того, чтоб знать какие методы по этой ссылке можно вызвать. Когда ты вызываешь методы, тебе уже плевать, интерфейс это или класс - тебе важен лишь набор методов, которые в нём есть. А когда присваиваешь переменную класса переменной интерфейса - лишь ограничиваешь набор методов, которые можешь вызвать до набора методов интерфейса. То есть, показывая пальцем на академика, говоришь кондуктору: вот тебе новый пассажир, можешь продавать ему билет, проверять, штрафовать. - это ты приводишь тип "академика" к "пассажиру".

Цитата(Wowa @ 11.1.2006, 23:19 Найти цитируемый пост)

мы указываем, интерфейсом какого именно класса должен интерфейс является. Так?
Вот именно этой строкой:
cit = man;

да?

Нууу... мы говорим что гражданином, с которым мы сейчас что-то будем делать - будет вооон тот мужик. И пусть он не волнуется, он нам нужен только как гражданин. Ссылка cit умеет работать только с гражданами. А поскольку man является и гражданином в т.ч. - то вот ей новый гражданин.



--------------------
Люди - это свечи. Они либо горят, либо их - в жопу!(с)

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

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

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


 




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


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

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