Переопределить реализацию базового класса так, чтобы вызовы из унаследованных функций базового класса также вызывали функцию overidden - PullRequest
0 голосов
/ 10 июня 2018

Я должен переопределить функцию в базовом классе таким образом, чтобы вызовы унаследованных функций также приводили к вызовам этой переопределенной функции вместо базовой реализации.

class base_class
{
    string abc;
    public int get_1()
    {
        return 1;
    }
    public  int get_number()
    {
        return get_1()+1;
    }
}

class der_class : base_class
{
    public int get_1()
    {
        return 2;
    }
}
class Program
{
    static void Main(string[] args)
    {
        der_class abc = new der_class();
        Console.WriteLine(abc.get_number());
        Console.ReadKey();
    }
}

Это печатает 2. Какможно получить выходные данные равными 3, сделав get_number для вызова переопределенного get_1?

1 Ответ

0 голосов
/ 10 июня 2018

Вам необходимо ключевое слово override для фактического переопределения метода, в противном случае вы его скрываете.

class der_class : base_class
{
    // note the word override here!
    public override int get_1()
    {
        return 2;
    }
}

Кроме того, вам нужно сделать метод virtual в базовом классе:

class base_class
{
    string abc;
    // note the word virtual here!
    public virtual int get_1()
    {
        return 1;
    }
    public  int get_number()
    {
        return get_1()+1;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...