0 / 0 / 0
Регистрация: 27.09.2011
Сообщений: 3
|
||||||
1 | ||||||
.NET 4.x Переопределение метода базового класса27.09.2011, 18:57. Показов 3767. Ответов 6
Метки нет Все метки)
(
Есть библиотека, в которой находится базовый класс А, который содержит функцию проверки Check. Есть два производных класса B и C. Задача заключается в том, что нужно, используя эту библиотеку, переопределить функцию проверки Check(), чтобы в другом проекте классы B и C использовали этот переопределённый алгоритм проверки.
Есть:
protected override bool Check() { return (a > 100 && b < 5); } Есть ли какое-то красивое решение этой проблемы? Единственное, что сейчас приходит на ум - это переопределение Check непосредственно в классах Extended_B : B и Extended_C : C, но по факту получается, что код-то один и тот же.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
27.09.2011, 18:57 | |
Ответы с готовыми решениями:
6
Переопределение метода базового класса в производном Полиморфизм: вызов метода базового класса, переопределенного метода и нового метода Использование метода из наследованного класса к объекту базового класса Вызов метода базового класса |
![]() 16732 / 12488 / 3280
Регистрация: 17.09.2011
Сообщений: 20,713
|
|
27.09.2011, 19:15 | 2 |
Наследуйте абстрактный класс A1 от А, переопределите в нем метод Check, а потом наследуйте B и С от А1
0
|
0 / 0 / 0
Регистрация: 27.09.2011
Сообщений: 3
|
|
27.09.2011, 19:20 [ТС] | 3 |
Т.е. А1: А, а затем В1: А1, С1: А1? Но в этом случае В1 и С1 не будут включать функционал, реализованный в В и С.
0
|
![]() 16732 / 12488 / 3280
Регистрация: 17.09.2011
Сообщений: 20,713
|
|
27.09.2011, 22:33 | 4 |
В и С - ваши классы или тоже входят в библиотеку?
Если входят, то ничего не поделаешь - придется переопределять одинаковый метод в обоих классах.
0
|
0 / 0 / 0
Регистрация: 27.09.2011
Сообщений: 3
|
|
27.09.2011, 23:21 [ТС] | 5 |
В и С тоже входят в первую библиотеку, но у меня есть возможно как-то подправить их, если надо. Главная суть - это чтобы в двух разных местах проверка работала по-разному с минимальным дублированием кода
0
|
![]() 16732 / 12488 / 3280
Регистрация: 17.09.2011
Сообщений: 20,713
|
|
27.09.2011, 23:46 | 6 |
Если есть возможность подправить, то лучше сделать как я предложил в первом варианте:
наследовать абстрактный класс А1 от А, в нем перегрузить нужный метод. Наследовать В и С от А1 (меняется всего одна строчка кода). В результате получаем такую иерархию: А | A1 (здесь метод Check перегружен) / \ B C
0
|
мастер топоров
913 / 738 / 101
Регистрация: 16.08.2009
Сообщений: 1,476
|
|
28.09.2011, 13:38 | 7 |
наследование - это хорошо, да не очень
если проверка должна работать по-разному, тогда вам нужно либо делать разную реализацию метода проверки в наследуемых классах, либо же извернуться и сделать только один класс, который наследуется от "А" и в нем динамически поменять реализацию метода проверки
0
|
28.09.2011, 13:38 | |
Помогаю со студенческими работами здесь
7
Вызов метода из базового класса Перекрытие метода базового класса Вызов метода наследика с базового класса Переопределение метода стороннего класса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |