覆盖基类的实现,使得来自继承的基类函数的调用也调用覆盖函数

时间:2018-06-10 09:31:55

标签: c# oop inheritance polymorphism

我必须覆盖基类中的一个函数,使得对继承函数的调用也会导致调用此重写函数而不是基本实现。

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.如何通过使get_number调用覆盖get_1来使输出为3?

1 个答案:

答案 0 :(得分:5)

您需要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;
    }
}