Абстрактный метод переопределяет абстрактный метод

Select * From Master..SysUsers Where IsSqlUser = 1
5
задан Mat 11 November 2011 в 12:32
поделиться

4 ответа

Просто оставьте метод полностью в классе B. B все равно наследует его от A, и, поскольку сам B является абстрактным, вам не нужно явно реализовывать его снова.

13
ответ дан 18 December 2019 в 06:02
поделиться

У меня работает в VS2008; без ошибок, без предупреждений. НО, нет причин использовать «переопределение» в B. Этот код эквивалентен:

public abstract class A
{
    public abstract void Process();
}

public abstract class B : A
{
}

public class C : B
{
    public override void Process()
    {
        Console.WriteLine("abc");
    }
}
8
ответ дан 18 December 2019 в 06:02
поделиться

Alon -

Это не имеет смысла. Прежде всего, это действительно хорошо компилируется. Во-вторых, абстрактный метод, который вы объявили в A, наследуется (все еще абстрактно) в B. Следовательно, вам не нужно объявлять Process () в классе B.

- Марк

3
ответ дан 18 December 2019 в 06:02
поделиться

Иногда я видел это вместо неабстрактного виртуального метода абстрактным методом. Например:

public abstract class SomeBaseType
{
    /* Override the ToString method inherited from Object with an abstract
     * method. Non-abstract types derived from SomeBaseType will have to provide
     * their own implementation of ToString() to override Object.ToString().
     */
    public abstract override string ToString();
}

public class SomeType : SomeBaseType
{
    public override string ToString()
    {
        return "This type *must* implement an override of ToString()";
    }
}
3
ответ дан 18 December 2019 в 06:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: