У меня есть базовый класс (А) ниже, что я всегда хочу, унаследованных отКак ссылаться абстрактный метод из реализованного класса в C#
class A
{
abstract protected int foo();
public int foo2()
{
//do some stuff
foo();
}
}
Это не будет работать, потому что я не могу иметь абстрактного метода в не-абстрактном классе. Но как я могу выполнить следующие цели:
классы, которые наследуют класс A, будут иметь foo2 уже реализованы, но классы, которые наследуют, ДОЛЖНЫ реализовать foo? Также было бы предпочтительнее, чтобы foo2 был надёжным.
Update: Класс А не должен быть неабстрактными
Почему не может быть абстрактным? Сделайте абстракцию и добавьте «virtual» в foo. – Jaster
FYI: принцип чистого кода: поддержка композиции над наследованием –
Вы можете сделать 'foo()' a 'виртуальный метод' с реализацией по умолчанию или создать новый« интерфейс »с этим методом и сделать его« класс A »реализовать. Или просто сделайте 'class A'' абстрактным классом'. – W0lfw00ds