Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/51: Рейтинг темы: голосов - 51, средняя оценка - 4.73
 Аватар для _NuClear
27 / 27 / 2
Регистрация: 09.12.2008
Сообщений: 138

Интерфейсы

20.02.2009, 18:17. Показов 9689. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Так как в C# множественное наследование не допустимо в книгах пишут что с помощью интерфейсов можно обойти этот недостаток, но мне так и не стало понятно как именно, наследование классов дает нам новые готовые к использованию методы а интерфейс только описывает метод который нужно реализовать, но не дает готовых к использованию методов. Я понимаю что может просто чего то не до понял но что именно ??
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.02.2009, 18:17
Ответы с готовыми решениями:

Интерфейсы. Выделить у классов общий интерфейс(или интерфейсы)
Задание: У классов выделить общий интерфейс ( или интерфейсы ). первый класс : using System; using...

Интерфейсы
Не совсем понятно, как программа (или компилятор ?) определяет метод какого класса нужно вызвать. interface IInt { void Foo...

Интерфейсы
Здравствуйте! Помогите со следующими заданиями пожалуйста: 1. Создайте три интерфейса, каждый с двумя методами. Наследуйте новый...

12
Администратор
 Аватар для mik-a-el
87858 / 53179 / 249
Регистрация: 10.04.2006
Сообщений: 13,765
20.02.2009, 18:36
Цитата Сообщение от _NuClear Посмотреть сообщение
но мне так и не стало понятно как именно, наследование классов дает нам новые готовые к использованию методы а интерфейс только описывает метод который нужно реализовать, но не дает готовых к использованию методов
Так реализуйте его методы и получите что нужно.
1
 Аватар для _NuClear
27 / 27 / 2
Регистрация: 09.12.2008
Сообщений: 138
20.02.2009, 20:03  [ТС]
но в чем тогда прикол, зачем наследовать интерфейс если можно просто добавить нужный метод.
0
Любитель давать советы
 Аватар для Alexiski
342 / 135 / 14
Регистрация: 12.01.2009
Сообщений: 511
21.02.2009, 00:34
Интерфейсы применяются немного для другого. Не для наследования, а для полиморфизма. То есть, если мой класс реализует интерфейс А, то внешний мир может с ним работать, как с полноценным А. К сожалению, это действительно не означает, что я могу взять готовую реализацию А и дописать к ней свою функциональность, как это бывает в случае наследования. Не зря говорят, что класс реализует интерфейс А (но не наследует его - нечего там наследовать). Это цена отказа от множественного наследования..
1
 Аватар для _NuClear
27 / 27 / 2
Регистрация: 09.12.2008
Сообщений: 138
21.02.2009, 01:21  [ТС]
спс да действительно забыл про полиморфизм, вопрос вроде не сложный но интересный поэтому и задал ...
0
Администратор
 Аватар для mik-a-el
87858 / 53179 / 249
Регистрация: 10.04.2006
Сообщений: 13,765
21.02.2009, 14:31
Цитата Сообщение от Alexiski Посмотреть сообщение
Не для наследования, а для полиморфизма.
Предназначение интерфейсов - это отделение интерфейса класса от его реализации. Т.е. вы можете где-либо работать с этим интерфейсом и вас не будет беспокоить, от какого класса он получен. Полиморфизм - это лишь одно из применений интерфейсов.
2
0 / 0 / 0
Регистрация: 01.03.2008
Сообщений: 10
12.03.2009, 16:19
Цитата Сообщение от mik-a-el Посмотреть сообщение
Предназначение интерфейсов - это отделение интерфейса класса от его реализации. Т.е. вы можете где-либо работать с этим интерфейсом и вас не будет беспокоить, от какого класса он получен. Полиморфизм - это лишь одно из применений интерфейсов.
Вот и я тоже репу чешу, не понимая почему люди говорят о множественном наследовании в контексте применения интерфейсов !?
Наследую не один интерфейс своим классом Class MynameClass : interface A interface B
Я всего лишь беру обязательство реализовать описанные в интерфейсах методы - причем все эначе класс не будет работать .
Почему бы мне просто не создать PUBLIC Metod() ..... и тут же его описать не наследуя никаких интерфейсов ?
В последствии к этому PUBLIC классу все кто хочет может обратится также как и к реализованному интерфейсу если это все так как я описал то честно мне не ясно зачем вообще нужны интерфейсы ?
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
13.03.2009, 03:39
alex171069, потому что, если создать такой метод, он будет виден, только если работать в пределах типа этого класса. А если тип неизвестен для какого-либо экземпляра класса, следовательно неизвестны как работать с этим объектом. Например, сериализация. При использовании стандартного XmlSerializer. Для несложных классов справляется хорошо, но случается так, что необходимо самостоятельно определить ход сериализации/десериализации. Для этого достаточно унаследоваться от IXmlSerializable. Тогда сериализатор впроцессе работы попытается привести ваш класс к интерфейсу IXmlSerializable и в случае успеха, вызовет метод ReadXml() / WriteXml(). Иначе переберет все разрешенные свойства и их сериализует/десериализует.
1
 Аватар для _NuClear
27 / 27 / 2
Регистрация: 09.12.2008
Сообщений: 138
12.06.2009, 19:19  [ТС]
сейчас читаю книгу "C# ускоренный курс для профессионалов" Трей Неш 2008
в главе 5(ст.164) наткнулся на такой код :

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using System;
using System.Collections.Generic;
using System.Text;
 
namespace NasliduvannjaInterface
{
    public interface IUIControl
    {
        void Paint();
    }
 
    public interface IEdit : IUIControl
    {
        new void Paint();
    }
 
    public interface IDropList : IUIControl
    {
    }
 
    public class ComboBox : IEdit, IDropList
    {
        void IEdit.Paint()
        { Console.WriteLine("ComboBox : IEdit"); }
 
        void IDropList.Paint()
        { Console.WriteLine("ComboBox : IDropList"); }
 
        public void Paint()
        {
            ((IUIControl)this).Paint();
        }
    }
 
    class Program
    {
 
        static void Main(string[] args)
        {
            ComboBox cb = new ComboBox();
            cb.Paint();
            ((IEdit)cb).Paint();
            ((IDropList)cb).Paint();
            ((IUIControl)cb).Paint();
            Console.ReadLine();
        }
    }
}
Error 1 'IDropList.Paint' in explicit interface declaration is not a member of interface
в чем тут проблема ??
0
 Аватар для Veyron
107 / 107 / 9
Регистрация: 02.06.2009
Сообщений: 578
12.06.2009, 20:12
У Вас не объявлен метод Paint в интерфейсе IDropList
1
85 / 85 / 6
Регистрация: 13.10.2008
Сообщений: 144
12.06.2009, 20:15
Не смотря на что IDropList наследует IUIControl, полное имя Paint() будет IUIControl.Paint().

Спасибо codeproject - http://www.codeproject.com/KB/... faces.aspx
1
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
13.06.2009, 04:21
При наследовании классом интерфейса, необходимо реализовать также все интерфейсы-родители от этого интерфейса
1
 Аватар для _NuClear
27 / 27 / 2
Регистрация: 09.12.2008
Сообщений: 138
15.06.2009, 20:39  [ТС]
всем спс, тут моя ошибка.. не то немного накодил, с книгой все ОК.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.06.2009, 20:39
Помогаю со студенческими работами здесь

Интерфейсы
Фамилия и инициалы водителя, Номер автобуса, Номер маршрута, Марка, Год начала эксплуатации, Пробег. Создать массив объектов. Вывести: а)...

Интерфейсы
допустим дан интерфейс: Interface IGoto { IGoto go(); } Что делает IGoto go(); . То есть зачем так делают, и как в...

Интерфейсы
Помогите пожалуйста. Есть базовый класс и два дочерних. Нужно разработать такие интерфейсы: ICloneable, IComparable, IEnumarble,...

Интерфейсы...
Доброго времени суток товарищи! Подскажите пожалуйста, какую не слишком сложную в написании программу можно реализовать при помощи...

C# интерфейсы
/* Программа: Явная реализация члена интерфейса. */ using System; interface IEven { bool isOdd(int x); bool isEven(int...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru