45 / 47 / 4
Регистрация: 11.02.2010
Сообщений: 376

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

13.10.2011, 14:04. Показов 34318. Ответов 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 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В качестве. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru