为了账号安全,请及时绑定邮箱和手机立即绑定

从基础强制方法调用子类的新方法

从基础强制方法调用子类的新方法

C#
慕码人2483693 2021-05-04 13:12:42
我的理解是,子类的行为与父类完全相同,除了其他方法或那些使用new和override关键字“重写”的方法。显然,这是不正确的。请参见下面的代码(为了方便阅读,删除了括号)class BIG    protected void Output(string text = "")        Console.WriteLine("BIG - " + text);    public void CallingOutput()        Output("Outputting...");class SMALL:BIG    public new void Output(string text = "")        Console.WriteLine("SMALL - " + text);class Program    static void Main(string[] args)        SMALL foo = new SMALL();我已经知道我可以BIG.Output(string)使用new关键字将其隐藏在“小”中。直接调用时,它可以完美运行。>> foo.Output("Outputting...")SMALL - Outputting...这是与我的理解相抵触的地方。我认为class SMALL:BIG定义class SMALL与从BIG定义并复制粘贴所有方法完全相同。简而言之,我认为上面的SMALL类与此等效:class SMALL    public void Output(string text = "")        Console.WriteLine("SMALL - " + text);    public void CallingOutput()        Output("Outputting...");显然这是不正确的,因为>> foo.CallingOutput()BIG - Outputting...它仍然使用原来Output(string)从BIG当间接调用。这样做的正确方法是什么,以便foo.CallingOutput()输出"SMALL - Outputting..."假设我无权访问BIG并且不允许进行任何更改。而且我也不想隐藏,CallingOutput()因为这基本上是在重写类。(是的,隐藏CallingOutput()使其起作用)在发布此消息之前,我做了一些搜索,并在中找到了类似的问题C++。但是,不可能做到这一点。我不相信 如此强大的语言,却无法告诉编译器哪种方法。这是另一种语言,因此可以发布此帖子,因为它不能被视为重复。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信