Рассмотрим следующее -Использование абстрактных переопределение и вызова базового класса
void Main()
{
var c = new C();
c.Print();
}
public abstract class A
{
public virtual void Print()
{
Console.WriteLine("I'm in A!");
}
}
public abstract class B : A
{
public abstract override void Print();
}
public class C : B
{
public override void Print()
{
Console.WriteLine("I'm in C!");
base.Print();
}
}
Это, конечно, не будет компилироваться, так как он думает, что я пытаюсь вызвать метод печати B, который является абстрактным. То, что я хочу сделать, это метод печати C, а затем вызвать метод печати базы, который будет «привязываться» к методу печати A. Я хотел бы, чтобы это было -
I'm in C!
I'm in A!
Делает это даже возможно? Что я делаю не так?
EDIT: Я хотел бы добавить, что основная мысль о коде выше заключается в том, что я пытаюсь заставить любого, кто расширяет B, реализовать свой собственный метод печати.
Используйте ее общественности с { общественности C(): базовый() {} Печать(); } – user1956570
Кажется, что иерархия хрупкая и ее нужно перепроектировать. Вам нужно подумать, подходит ли наследование. – ChaosPandion
Почему вы пытаетесь заставить разработчика C копировать и вставлять код из A в C? – jmoreno