c# - 覆盖基类的实现,以便从继承的基类函数调用也调用被覆盖的函数
问题描述
我必须以这样一种方式覆盖基类中的函数,即调用继承的函数也会导致调用这个被覆盖的函数而不是基实现。
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?
解决方案
您需要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;
}
}
推荐阅读
- javascript - 在 ReactJs 中使用 NodeJS API 登录失败
- python-3.8 - IndentationError:预期输出
- phpcs - phpcs:引用的嗅探“WordPress”不存在
- ruby-on-rails - Ruby on Rails - 刷新浏览器时没有路由匹配 [GET] "/signup"
- firebase - 在 Firebase Auth 自定义声明中存储 JWT 刷新令牌是否安全?
- c# - 输入字符串“x”不是 JsonConvertDeserializeObject 的有效数字错误
- elisp - 底部显示缓冲区以弹出消息
- html - 用 selenium、python 解析“进一步阅读”
- hibernate - 如何在 Spring Data JPA 中更新 @OnetoMany 关系中的子实体
- javascript - 我有一个接受回调作为参数的映射方法,但我不断收到此错误 JavaScript