Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 296
1

Наследование и возвращаемый тип

15.08.2018, 23:36. Показов 1075. Ответов 3
Метки нет (Все метки)

Коллеги, приветствую.
Вопрос по проектированию больше, как лучше перегрузить метод базового класса в подклассах?
Есть абстрактный базовый класс Bicycle. У него два подкласса TwoWhells и ThreeWhells.
В Bicycle объявляю абстрактный метод GetRepo:
C#
1
public abstract List<Bicycle> GetRepo();
По логике для поддержания равновесия во вселенной мне нужно переопределить метод GetRepo() в подклассах TwoWhells и ThreeWhells. Ранее по аналогии протаскивал методы void, но сейчас возникла проблема - возвращаемый тип должен меняться исходя из класса экземпляра. Чтобы было красиво, без дублирования кода и прочих, с конкретной реализацией в нужном классе:
C#
1
var twoWhellsRepo = TwoWhells.GetRepo();
Или я не в ту сторону думаю и нужно просто прописать реализацию в обоих подклассах не думая о базовом? Вроде не по божески это. Подскажите плиз?..
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.08.2018, 23:36
Ответы с готовыми решениями:

почему частичные методы не могут иметь возвращаемый тип?
Почему частичные методы не могут иметь возвращаемый тип?

Возвращаемый метод работает некорректно
Добрый день! Изучаю сейчас асинхронные методы. Столкнулся с проблемой, что при вводе неправильного...

Реализовать метод, возвращаемый строку
нужно использовать void как string чтоб было примерно так: void S1(string s) { //... } ...

Наследование интерфейса и наследование реализации
Начал читать книгу GoF и сразу же в предисловии попал в тупик. Чем отличается наследование...

3
32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 296
16.08.2018, 11:52  [ТС] 2
Потыкался, попробовал применить хук-методы - не канает((
Создам в каждом производном классе статичный метод GetRepo() и всё, пофиг на дзен..
0
Эксперт .NET
15570 / 11817 / 3100
Регистрация: 17.09.2011
Сообщений: 19,734
18.08.2018, 22:52 3
Лучший ответ Сообщение было отмечено SPNick как решение

Решение

Проблема у вас в том, что вы смешиваете сущность и хранилище в одном классе, т.е. нарушаете принцип единственной ответственности.
Вынесите метод GetRepo в отдельный тип, можно даже через обобщенный интерфейс IRepo<T> и делайте возвратный тип List<T>
1
32 / 25 / 19
Регистрация: 21.07.2015
Сообщений: 296
21.08.2018, 10:52  [ТС] 4
kolorotur, а я почему-то думал, что раз класс велосипеды, то и все связанное с велосипедом нужно писать тут же (GetRepo(), GetById() и пр.), т.е. это и есть единственная ответственность.. Спасибо, понял вас
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2018, 10:52

Инкапсуляция(возвращаемый тип)
Не могу понять, (3-7), какой возвращаемый тип? void или Secundi? class Secundi { ...

Непонятный возвращаемый тип
Расскажите какой тип должен быть у переменной idRe, чтобы можно было бы присвоить ему значение...

Возвращаемый тип в java
Вопрос такой как создать возвращаемый метод в java я знаю что void это не возвращаемый, а как...

Перечислитель и возвращаемый тип
Господа, есть два кусочка кода int nums = { 1, -2, 3, 0, -4, 5 }; и var posNums = from n...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru