Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 11.02.2015
Сообщений: 5

Наследование для чайника

15.02.2016, 17:52. Показов 965. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем добрый день,
Подскажите, пожалуйста, имеется базовый класс, в котором объявлена виртуальная функция, в дочернем классе виртуальная функция переопределена, все нормально. Дело в том, что дочерних классов десятки, и мне не хотелось бы в каждом дочернем классе писать одну и ту же функцию. Если ее не переопределить, а оставить в базовом классе, нужно чтобы в этой функции были доступны поля дочернего класса, а базовый класс не может иметь доступа к полям дочернего класса. Есть идея в базовом классе объявить поле с типом базового класса и в конструкторе дочернего класса помещать туда ссылку на дочерний объект. Далее из функции базового класса обратится к этой ссылке и получить доступ к полям дочернего объекта. Может есть "классический" подход, подскажите пожалуйста..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.02.2016, 17:52
Ответы с готовыми решениями:

Использование модификатора ref для ссылок на объекты (для чайника)
Всем привет! Изучаю c# по учебнику Шилдта, также разбираю примеры из него. Из примера ниже мне непонятно. Зачем здесь использовать...

QT для чайника
Хочу выучить QT, можете дать примеры программ (на уровень чайник в QT)

ДК для чайника
Мой друг попросил меня помочь ему подобрать ДК 5.1, но не по отдельности, а как говориться в "одной коробке". Его интересует...

5
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
15.02.2016, 18:16
beggar, такой ситуации вообще не должно возникать.
Цитата Сообщение от beggar Посмотреть сообщение
Дело в том, что дочерних классов десятки, и мне не хотелось бы в каждом дочернем классе писать одну и ту же функцию.
Одну и ту же функцию и не надо писать. Если она везде одна и та же, то почему же нельзя и поля, которые она использует, определить в базовом классе?
1
0 / 0 / 0
Регистрация: 11.02.2015
Сообщений: 5
15.02.2016, 21:50  [ТС]
Они статические, лучше приведу абстракстный пример: допустим есть базовый класс – животное, есть дочерний класс – корова, курица. Есть свойство для всех животных – количествно ног. Для задания данного свойства я объявил статическое свойство количество ног в каждом дочернем классе, как я понял объявлять его в базовом классе нельзя, так как статическте свойство не наследуется. Сделал я его статическим для того чтобы якобы экономить память и не хранить у многочисленных представителей класса «кураца» данные о количестве ног, так как поидее количество ног у всех куриц одинаковое. Возможно подход неправильный…
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
15.02.2016, 22:14
Цитата Сообщение от beggar Посмотреть сообщение
Возможно подход неправильный…
C#
1
2
3
public interface ILegs{
    int LegsCount { get; }
}
1
979 / 874 / 350
Регистрация: 26.04.2012
Сообщений: 2,647
16.02.2016, 06:04
А я бы сделал вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
        abstract class Animal
        {
            public abstract int LegsCount { get;}
        }
        abstract class Cow :Animal
        {
            public override int LegsCount { get { return 4; } }
        }
        abstract class Chicken:Animal
        {
            public override int LegsCount { get { return 2; } }
        }
И не заморачивался...
0
0 / 0 / 0
Регистрация: 11.02.2015
Сообщений: 5
16.02.2016, 12:02  [ТС]
Спасибо всем большое, попробую оба варианта, для самообразования.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.02.2016, 12:02
Помогаю со студенческими работами здесь

Литература для чайника для понимания VCL
Добрый день. Заинтересовался, как Delphi "рисует" компоненты VCL. То есть есть желание чуток модифицировать ComboBox Чтоб...

SysTick для чайника
Доброго времени суток. Хочу мигать светодиодами, а задержку делать с помощью системного таймера. Не использую SPL, только CMSIS. Есть...

Литература для чайника
Подскажите литературу для чайника, где подробно рассказывается как создавать приложения для работы с БД SQL.

Задачи для чайника
Всем привет! Недавно начал изучать язык программирования C++, у меня есть Visual Studio 2012, начал уже программировать - знаю уже...

Linux для чайника
:wall: "Головой об стенку бьется человек в печали.." Решил ставить Linux Ubuntu, лазил по форумам, за день перепробовал около 4 способов...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru