Есть иерархия классов, появилась ситуация в которой не могу придумать нормального решения. (стрелками показано наследование, красным цветом - желаемое, но невозможное )
Классы U, S, A, W используют одну и ту же реализацию функции F
А классы SAI, AAI, WAI другую, но общую между собой. Именно это и не получается реализовать так как нет возможности создать дополнительный класс AI реализовать в нем F и тогда наследоваться от него. Получается что придется просто копировать реализацию F для SAI, AAI, WAI, что есть плохо.
Какой есть способ красиво решить эту проблему??
Спасибо!
Множественное наследование от нескольких классов невозможно. Используйте интерфейс IFunctionF и два вспомогательных класса F1 и F2, каждый из которых имеет свою реализацию IFunctionF. И далее от F1 и F2 наследуйте ваши семейства U,A,S,W от F1 и SAI, AAI, WAI от F2.
public interface F
{
int F();
}
class F1:F
{
public virtual int F()
{
return 2;
}
}
class F2 : F
{
public virtual int F()
{
return 3;
}
}
class S : F1
{
void a()
{
F();
}
}
class AAI : F2
{
void a()
{
F();
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости