Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/170: Рейтинг темы: голосов - 170, средняя оценка - 4.96
45 / 47 / 4
Регистрация: 11.02.2010
Сообщений: 376

Может ли класс наследовать от нескольких классов

13.10.2011, 14:04. Показов 34244. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может ли класс наследовать от нескольких классов?
И если да, то как?). Мне надо повторяющиеся свойства из разных классов вырвать)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.10.2011, 14:04
Ответы с готовыми решениями:

Структуры. Можно ли наследовать как от абстрактных классов?
я тут немного почитал о структурах и понял следующее: они свои объекты копируют, а не передают по ссылке. Это помогает минимизировать...

Как создать класс объектами которого являются объекты нескольких классов перечислений (enum-ов)
Подскажите, пожалуйста, как создать класс объектами которого являются объекты нескольких классов перечислений (enum-ов). например у...

Наследовать класс Button
Помагите сделать, надо наследовать класс Button, и внести такие изменения, когда создавал элемент кнопка автоматически называл...

18
 Аватар для nikola166
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
13.10.2011, 14:09
class A{}
class B:A{}
class C:B{}

Добавлено через 17 секунд
только так
1
45 / 47 / 4
Регистрация: 11.02.2010
Сообщений: 376
13.10.2011, 14:12  [ТС]
Цитата Сообщение от nikola166 Посмотреть сообщение
class A{}
class B:A{}
class C:B{}
А в этом случае class C через B получает доступ к классу A?
0
 Аватар для nikola166
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
13.10.2011, 14:16
вроде да
0
45 / 47 / 4
Регистрация: 11.02.2010
Сообщений: 376
13.10.2011, 14:22  [ТС]
Цитата Сообщение от nikola166 Посмотреть сообщение
вроде да
Печально). Конкретней бы узнать)
0
 Аватар для nikola166
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
13.10.2011, 14:24
набери прогу да и узнаешь))))
0
45 / 47 / 4
Регистрация: 11.02.2010
Сообщений: 376
13.10.2011, 14:37  [ТС]
Ну я и придурок. )))) Сам не догадался. Да, наследует))
0
 Аватар для nikola166
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
13.10.2011, 14:39
)))))
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
13.10.2011, 14:56
Наследовать в шарпе можно только от одного класса.
Но можно реализовывать сколько угодно интерфейсов
0
45 / 47 / 4
Регистрация: 11.02.2010
Сообщений: 376
13.10.2011, 15:14  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
Наследовать в шарпе можно только от одного класса.
Но можно реализовывать сколько угодно интерфейсов
Но ведь поочередное наследование все-таки предоставляет доступ к членам главного родительского класса.
А вот что значит интерфейс в Си шарп?
0
 Аватар для nikola166
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
13.10.2011, 15:19
интерфес это типа такого класса функции члены которого в интерфейсе только объявлены а в классе который этот интерфейс реализует должно быть определение всех функций которые объявлены в интерфесе, и можно еще добавить какие то новые. Думаю понятно объяснил
1
45 / 47 / 4
Регистрация: 11.02.2010
Сообщений: 376
13.10.2011, 15:38  [ТС]
Что т таки не догнал смысла(. Зачем объявлять интерфейсы, если все равно реализация и описание происходят внутри другого класса?. Или это что-то вроде прототипов в С++??
0
 Аватар для nikola166
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
13.10.2011, 15:42
чтобы программа понятней была, и реализация интерфейсов может быть разная
0
 Аватар для XAHOK
273 / 266 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
13.10.2011, 16:09
Реализация интерфейсов нужна когда необходимо работать с неизвестным типом. Информации о типе переменной мы не имеем, но мы знаем что тип реализует какой либо интерфейс. Так например оператор foreach проверяет класс на реализацию интерфейса IEnumerable<T> и пробегает по всем элементам, причем оператор совершенно не интересует структура класса, он знает что в нем реализованы определенные методы, которые он и вызывает.
Интерфейсы позволяют максимально абстрагироваться от конкретных типов. Так например я реализовывал интерпретатор языка в котором за выполнение каждого оператора отвечал соответствующий класс. Все объекты этих классов собирались в очередь выполнения и чтобы не делать кучу проверок какая именно инструкция сейчас будет выполнятся, я наследовал их от интерфейса в котором была 1 процедура Run, которую я и вызывал:
C#
1
2
3
4
foreach(IScriptCommand command in CommandStack)
{
    command.Run();
}
В итоге моей процедуре было глубоко безразлично какого именно класса был элемент command, я знал что он точно реализует интерфейс IScriptCommand и вызывал метод, который был объявлен в этом интерфейсе command.Run().
1
45 / 47 / 4
Регистрация: 11.02.2010
Сообщений: 376
13.10.2011, 18:58  [ТС]
Я вот тут чуть-чуть почитал. Реализовать в каждом классе, подключить так сказать, я, вроде, понял.
C#
1
2
3
public interface myShop{
int Rec();  
}
Что-то вроде этого).
А вот реализация, которая была описана выше. Предположим вот так:
C#
1
2
3
4
5
6
7
8
9
class Product:myShop  //здесь интерфейс нормуль, работает
{
.......................//
}
//Поехали дальше
class PC:Product
{
.................//
}
Вот как к классу PC интерфейс применить??
0
 Аватар для nikola166
10 / 10 / 1
Регистрация: 18.03.2010
Сообщений: 142
13.10.2011, 21:12
описываешь в нем функцию Rec();
вот тебе и реализация интерфейса

Добавлено через 3 минуты
C#
1
class name_Class: name_Interface()
тогда класс будет реализовывать интерфейс

Добавлено через 43 секунды
без ()
0
 Аватар для XAHOK
273 / 266 / 20
Регистрация: 27.02.2009
Сообщений: 694
Записей в блоге: 7
14.10.2011, 08:27
Цитата Сообщение от viktorrrr Посмотреть сообщение
Вот как к классу PC интерфейс применить??
Нужно в классе Product объявить метод int Rec() виртуальным и в классе PC сделать override этого метода.
При такой реализации класс PC можно привести к интерфейсу myShop и вернет он при вызове единицу.
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
class Program
    {
static void Main(string[] args)
        {
            PC pc = new PC();
            MessageBox.Show((pc as myShop).Rec().ToString());
            return;
        }
    }
 
public interface myShop
    {
        int Rec();
    }
 
    class Product : myShop 
    {
        //.......................//
        #region Члены myShop
 
        public virtual int Rec()
        {
            return 0;
        }
 
        #endregion
    }
    class PC : Product
    {
        public override int Rec()
        {
            return 1;
        }
    }
1
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
14.10.2011, 14:36
Delphi
1
2
3
4
5
6
static void Main(string[] args)
        {
            PC pc = new PC();
            MessageBox.Show((pc as myShop).Rec().ToString());
            return;
        }
А в чем преимущество привязки к интерфейсу в данном примере ?
C#
1
(pc as myShop).Rec().ToString()
если можно и прямо написать
C#
1
(pc.Rec().ToString())
1
 Аватар для Бабочка19
9 / 9 / 1
Регистрация: 20.01.2012
Сообщений: 196
27.11.2013, 13:38
вот хорошее видео
Кликните здесь для просмотра всего текста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2013, 13:38
Помогаю со студенческими работами здесь

Класс, который невозможно наследовать
Как создать класс, который невозможно наследовать? Видимо, поместить конструктор в раздел private? Кто что скажет по этому поводу?

Как наследовать класс activity
Написал класс activity1 в котором программно создан layout1. Как использовать мой класс в новом создаваемом приложении? какой нужен...

Как правильно наследовать класс в с++ builder?
Привет! Есть базовый класс BaseModel: class BaseModel{ protected: int code; UnicodeString name; public: ...

Как наследовать класс другого проекта?
Как наследовать класс другого проекта

Как наследовать класс от System.Object
Господа, подскажите дураку, как наследовать класс от System.Object? На код: class A : public System.Object{}; выдает ошибку


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru