Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
15 / 15 / 7
Регистрация: 27.10.2012
Сообщений: 112

Снова про интерфейсы в Java

29.12.2014, 16:23. Показов 1787. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Начал изучать яву, и, естественно, застопорился на интерфейсах. Долго лазил по разным книгам, форумам, сайтам, нашел кучу ответов(иногда даже противоречащих друг другу), и запутался еще сильнее. Назрели вопросы и хотел спросить у знающих людей.
1) Интерфейсы упрощают написание кода, или влияют лишь на производительность?
2) Можно ли заменить класс с интерфейсом, другим классом без него? Или нужно будет выбирать уже другой подход для решения задачи?
3) 90% примеров, которые я видел сводятся к "ключ-дверь-замок" и подобному. Слово "интерфейс" я и так понимаю. Можете привести реальный пример, где должен использоваться интерфейс, и каким бы должен был бы быть класс без интерфейса?
Заранее спасибо тем, кто хоть как-нибудь ответить
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.12.2014, 16:23
Ответы с готовыми решениями:

И снова про PopupMenu (было про длину, теперь про ширину)
Добавляем в пустое PopupMenu несколько пунктов динамически (шириной, например, до 50 символов). Отображаем его – всё нормально. Затем...

Про интерфейсы
Здравствуйте. Начал разбираться с OPC. Вопрос в том, что означает строчка: //Создаем объект списка OPC серверов OpcServerList...

Опять про интерфейсы. Зачем они?
Приветствую всех формучан! Вот начал изучать C# уже как пол года и меня мучает вопрос зачем все таки нужны интерфейсы, какой с них толк? ...

4
 Аватар для chizz
993 / 521 / 102
Регистрация: 19.03.2013
Сообщений: 3,114
Записей в блоге: 19
29.12.2014, 18:21
Использование и применение интерфейсов
Зачем нужны интерфейсы?
Дайте простое и внятное объяснение, что такое интерфейс

Добавлено через 1 минуту
От себя отвечу:

1) ни то ни другое. Вы ничего не читали толком, раз задаете такие вопросы. RTFM.
2) Можно. МОжно вообще без ООП и всяких дурацких классов все делать.
3) Вы видели мало примеров. RTFM.
1
12 / 12 / 4
Регистрация: 04.08.2010
Сообщений: 80
03.01.2015, 21:18
Лучший ответ Сообщение было отмечено san92der как решение

Решение

Доброго времени суток.
1. Интерфейс ни как несвязан с производительностью. Суть интерфейса это описание поведения, только поведения без реализации. Реализация поведения будет производится у 'наследников' этот интерфейса.
Тут же приведу пример. По долгу службы приходится много возиться с банковским оборудованием, на нем и приведу пример. Есть устройства кардридеры(для чтения пластиковых карт), все эти устройства разных моделей и производителей, те для выполнения одного и того же действия нам нужно передать устройствам разные команды. Тут и начинает работать основной принцип ООП - инкапсуляция(сокрытие). Т.е. пользователь не должен знать всей внутренней кухни, его интересует только конечный результат.
Таким образом все устройства у нас умеют включаться, выключаться, принимать, выдавать и читать карту. Это и есть поведение:
Java
1
2
3
4
5
6
7
interface Cardreader{
    void init(); // включить
    void release();// выключить
    void insert(); // принять
   void eject();// вернуть карту
    byte[] readData();// прочитать данные
}
После мы реализуем 'драйвер' для двух устройств. Одно устройство работает через usb порт, другое - через com:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class ReaderUSB implements cardreader{
    public void init(){
        // код инициализации
    }
    public void release(){
        // код 
    }
     public void insert(){
        // код 
    }
   public void eject() {
        // код 
    }
    public byte[] readData(){
        // код 
    }
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class ReaderRS232 implements cardreader{
    public void init(){
        // код инициализации
    }
    public void release(){
        // код 
    }
     public void insert(){
        // код 
    }
   public void eject() {
        // код 
    }
    public byte[] readData(){
        // код 
    }
Теперь мы можем создать объекты классов и вызывать их методы не задумываясь о внутренней реализацией, через какой порт работает устройство и тд. Например:
Java
1
2
3
4
5
6
7
8
9
Cardreader crd;
if (type == TYPE-RS232)
   crd = new ReaderRS232();
else
   crd = new ReaderUSB();
 
crd.init();
crd.insert();
И т.д.
Если не использовать интерфейс, то в классах кардридероы удалиться только кусок кода 'implements Cardriader', но мы не сможем работать с устройством как с некоторой абстракцией, как это показано чуть выше.

В кратце как то так. Прошу прощения за очепятки- писал с телефона.
3
15 / 15 / 7
Регистрация: 27.10.2012
Сообщений: 112
06.01.2015, 03:01  [ТС]
Спасибо. теперь понял. обычно все заканчивается на описание объявления интерфейсов. а толком написать, как это использовать никто не мог. либо я просто не то читал

Добавлено через 7 часов 23 минуты
Кстати. По первому вопросу, который сформулировал некорректно, но все же..
Поскольку в системе Java динамический поиск методов во время выполнения сопряжен со значительными накладными расходами по сравнению с обычным вызовом методов, в коде, для которого важна производительность, интерфейсы следует использовать только тогда, когда это действительно необходимо.
0
 Аватар для MrKvant
7 / 7 / 4
Регистрация: 15.12.2014
Сообщений: 17
06.01.2015, 17:02
полиморфизм
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.01.2015, 17:02
Помогаю со студенческими работами здесь

Интерфейсы в java
Как отобразить на панели рисования точку и круг ,если я хочу сделать интерфейс фигура и класс Point от которого наследую методы для класса...

Java интерфейсы и абстрактные класы:
помогите написать программу по Java интерфейсам и абстрактным классам: interface Ткань ß abstract class Одежда ß class Костюм.

Интерфейсы. Строки. Switch. Java
1). Разработать интерфейс Арифметика. Методы – сложение, сравнение. Класс Матрица (поле – двумерный массив) реализует интерфейс....

Снова про
У меня сайт на Джумле. Движок хороший, но в плане оптимизации... Скажем так, спорный. Все заголовки она выводит просто текстами, а...

Как правильно называть интерфейсы в Java
Здравствуйте! Как правильно именуются интерфейсы в Java. Допустим у меня есть класс Fish, Reptile они умееют плавать - интерфейс...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru