|
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36
|
||||||
В чем смысл интерфейсов?06.10.2014, 14:01. Показов 5993. Ответов 27
Метки нет (Все метки)
Приветствую,
Извините, что опять про интерфейсы. Полдня курил форумы и статьи про зачем они нужны. С одной стороны, вроде бы понятно: интерфейс - это описание того, что должен уметь делать класс, т.е. если класс имплементирует интерфейс, то это как бы является гарантией, что данный класс будет содержать нужные методы. Но с другой стороны, никакой гарантии я тут не вижу. Интерфейс гарантирует всего лишь, что класс будет содержать какой-то метод с определенным названием, получающий и возвращающий определенные типы данных, а что он реально делает - никому не известно. Т.е. даже если я напишу типа
И в чем же тогда профит?
0
|
||||||
| 06.10.2014, 14:01 | |
|
Ответы с готовыми решениями:
27
Java WebStart в чем смысл?
|
|
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36
|
|
| 06.10.2014, 14:29 [ТС] | |
|
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 06.10.2014, 14:31 | |
|
Severomor1, Гуглите полиморфизм.
0
|
|
| 06.10.2014, 14:48 | |
|
Severomor1, приведу примитивный пример. Есть основной класс Животные и класс Волк, Заяц, Медведь. Все эти животные разные. Например класс Волк, Заяц и Медведь наследуют (основные свойства класса Животные, например вес, цвет и тд). А есть еще классы, которые реализуют действия животных, например классы: бегать, прыгать, нападать на людей, есть траву. Так вот, основную информацию с весом, цветом и тд все животные наследуют от основного класса, а вот умение бегать, прыгать и тд, каждое животное реализует отдельно. Тоесть к волку мы подключаем интерфейсы, бегать и нападать на людей, а к зайцу, бегать и есть траву.
0
|
|
|
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36
|
||
| 06.10.2014, 15:09 [ТС] | ||
|
0
|
||
|
|
|
| 06.10.2014, 15:24 | |
|
Severomor1, одно дело расширить класс, от которого объект наследует свойства, а другое допилить еще один лишний интерфейс.
Добавлено через 40 секунд class c extends A implements addition1,addition2,addition3.... {} Добавлено через 55 секунд Может быть ситуация, что к классу А у вас нет доступа и вы его физически не можете модифицировать. Но есть выход! Интерфейсы
0
|
|
|
21 / 21 / 5
Регистрация: 26.12.2013
Сообщений: 177
|
|
| 06.10.2014, 15:29 | |
|
Интерфейсы чаще используют как метки классов, что-то вроде шаблонов, для большей понимабельности кода(стандартизации).
0
|
|
| 06.10.2014, 15:36 | |
|
Severomor1, хорошо, тогда смотрите так...Если между классами можно поставить отношение "является", то это наследование. Например волк является животным, но не каждое животное является волком. Тут идет наследование. Если класс, что-то реализует, нейкое действие (бегать, летать, плавать), то это является интерфейсами в данном случае. Вы главное поймите, что у вас волк получает интерфейс "охотиться", а заяц "есть траву", вот так описывается разница между объектами.
0
|
|
|
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36
|
|
| 06.10.2014, 15:38 [ТС] | |
|
Я, конечно, понимаю, что я нуб и опозорился, но профит от интерфейсов все равно пока не понял. )
Вот например с extends все понятно, мы получаем возможность использовать все методы класса, от которого мы наследуем. А implements не дает ничего, кроме требования реализовать в классе все методы интерфейса. Но если они нам нужны, то мы их можем реализовать и без интерфейса. Или он нужен исключительно для того, чтобы мы не забыли это сделать?
0
|
|
|
|
|
| 06.10.2014, 15:40 | |
|
Смысл как минимум в том, что интерфейсы позволяют создать легко расширяемую ОО-систему и при разумном проектировании сэкономить на количестве кода(так как вместо того, чтобы всё время использовать конкретный тип и дублировать код, мы можем использовать полиморфизм). Если вам нужно будет поддерживать вашу программу, например надо будет постоянно добавлять новые возможности, без интерфейсов не обойтись. Конечно обойтись без них можно, но со временем вообще нереально будет поддерживать вашу систему. Почитайте о проектировании объектно-ориентированных систем, увидите, без абстракции там никак.
0
|
|
|
|
|
| 06.10.2014, 15:41 | |
|
Severomor1, интерфейс может относиться к разным классам. Если класс наследует какой-то интерфейс, то он должен методы этого интерфейса хотя бы опубликовать у себя. Он их не обязан реализовывать. Можно оставить их пустыми и реализовать только нужные методы интерфейса.
0
|
|
|
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36
|
||
| 06.10.2014, 15:41 [ТС] | ||
|
0
|
||
|
|
|
| 06.10.2014, 15:45 | |
|
Представьте себе USB-разъем на вашем компе. Это класс. А есть переходники с USB на микро-usb, на SD - вот это набор интерфейсов. И они подходят не только для вашего USB-разьема, но и для других USB-разъемов, которые наследуют этот интерфейс.
Добавлено через 1 минуту Но чтобы ваш USB-разъем начал передавать данные - нужно реализовать метод интерфейса USB-out например. А класс SD например должен будет реализовать метод SD-in Этого интерфейса, чтобы получить данные от вашего USB.
0
|
|
|
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36
|
||
| 06.10.2014, 15:46 [ТС] | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36
|
||
| 06.10.2014, 15:57 [ТС] | ||
|
interface addition { int sum(int a, int b); } class c implements addition { int sum(int a, int b) {return a+b;} } то я смогу использовать данную реализацию метода sum где то еще, а не писать ее заново?
0
|
||
|
|
|
| 06.10.2014, 16:04 | |
|
нет, реализацию нельзя. только объявление.
Т.е. если вы где-то еще напишете class d implements addition, то надо будет заново реализовывать метод sum. Добавлено через 2 минуты Severomor1, В интерфейсах нет реализации, это абстракция, которая позволяет организовать множественное наследование Добавлено через 1 минуту Таким образом, с одной стороны, интерфейс — это «договор», который обязуется выполнить класс, реализующий его, с другой стороны, интерфейс — это тип данных, потому что его описание достаточно чётко определяет свойства объектов, чтобы наравне с классом типизировать переменные. Следует, однако, подчеркнуть, что интерфейс не является полноценным типом данных, так как он задаёт только внешнее поведение объектов. Внутреннюю структуру и реализацию заданного интерфейсом поведения обеспечивает класс, реализующий интерфейс; именно поэтому «экземпляров интерфейса» в чистом виде не бывает, и любая переменная типа «интерфейс» содержит экземпляры конкретных классов.
0
|
|
|
0 / 0 / 0
Регистрация: 09.01.2014
Сообщений: 36
|
||
| 06.10.2014, 16:04 [ТС] | ||
|
0
|
||
| 06.10.2014, 16:04 | |
|
Помогаю со студенческими работами здесь
20
В чем заключается необходимость интерфейсов? В чем смысл this В чем смысл? В чем смысл указателей? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|