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

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

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


 




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


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

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