在C#中覆盖关键字

用户名

我有以下课程:

namespace ConsoleApplication8
{
    public abstract class Employee
    {
        public virtual void Show()
        {
            Console.WriteLine("from base.");
        }
    }

    public class Manager:Employee 
    {
        public void Show()
        {

            Console.WriteLine("from child.");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var man=new Manager();
            man.Show();
            Console.ReadKey();
        }
    }
}

在这里,我没有overrideShow()派生类中的方法使用任何关键字,Manager但是代码运行正常。那么override关键字的实际用途是什么

托斯滕·迪特玛

您没有覆盖原始方法,而是将其隐藏这也是可能的,但由于失去多态性,可能无法满足您的期望或期望我举一个例子:

static void Main(string[] args)
{
    var man=new Manager();
    man.Show();
    Console.ReadKey();
}

这是您的代码,并输出“ From child”。使用“替代”时,以下内容还将输出“来自子代”。就您而言,它不会。

static void Main(string[] args)
{
    var man=new Manager();
    (man as Employee).Show();
    Console.ReadKey();
}

这里提出了一个类似的问题:c#中的virtual关键字虽然它没有解决override关键字,但问题类别大致相同。


多态性何时有用的现实示例。我必须编写一个应用程序,以根据公司角色计算公司中所有员工的奖金正如您所做的那样,我有一个带有public virtual double CalculateBonus();方法的雇员类,并从中派生了几个

多态性的帮助,我要做的就是迭代List<Employee>所有雇员,而不管他们的角色如何,并调用该CalculateBonus方法,因为多态性确保始终调用覆盖。

如果没有覆盖,则奖金将全部为0,因为这是CalculateBonusclass中的默认结果Employee

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C#中的“ This”关键字

来自分类Dev

在GroovyShell中覆盖“ this”关键字

来自分类Dev

在GroovyShell中覆盖“ this”关键字

来自分类Dev

C#中的DLL C ++等价性(关键字“ IN”)

来自分类Dev

参数c#中此关键字的用法

来自分类Dev

在C#中取消定义关键字

来自分类Dev

了解C#中的非托管关键字

来自分类Dev

如果C#中的关键字未在系统类中定义,那么CLR中的关键字在哪里?

来自分类Dev

C#使用关键字的范围

来自分类Dev

JSON 使用 C# 关键字

来自分类Dev

C#“new”关键字

来自分类Dev

C ++中的“ using”关键字

来自分类Dev

了解C ++中的volatile关键字

来自分类Dev

在C中声明关键字

来自分类Dev

C中的extern关键字

来自分类Dev

C ++中const关键字的区别

来自分类Dev

C ++中关键字new的解释

来自分类Dev

您可以在JAVA中覆盖THIS关键字吗

来自分类Dev

您可以在JAVA中覆盖THIS关键字吗

来自分类Dev

为什么 C++ 中的关键字 struct 与 C 中的关键字 struct 不同?

来自分类Dev

out关键字不适用于C#中的method中的方法

来自分类Dev

VB Linq中Aggregate关键字在C#中的等效项是什么?

来自分类Dev

c#中的闭包示例中的async关键字

来自分类Dev

c#中存储过程中await关键字的位置

来自分类Dev

C#中'const'关键字的C ++ / CLI等效项是什么?

来自分类Dev

C中是否有类似于C#的out / out关键字的内容?

来自分类Dev

C#是否等效于C ++朋友关键字?

来自分类Dev

关键字“自动” C ++和“动态” C#

来自分类Dev

C ++等同于C#值关键字