C#派生类不会覆盖基本方法

时间:2017-03-14 13:20:25

标签: c# linux polymorphism ubuntu-16.04 derived-class

目前正在处理对象和类。 我正在效仿我的老师给出的一个例子,但它没有按照它的设想工作。 请注意,我正在使用ubuntu而不是windows,我不确定这是否会影响任何内容。

using System;

namespace AEDlc
{
    /**Base Classe Employee**/
    class Employee
    {
        private string name;
        public Employee(string PersonName)
        {
            name = PersonName;
        }
        public void ShowName()
        {
            Console.WriteLine("{0}", name);
        }

        public virtual void ShowFunc()
        {
            Console.WriteLine("Employee");
        }
    }

    /** Classe Employer **/
    class Employer : Employee
    {
        public Employer(string EmployerName) : base(EmployerName)
        {
        }
        /** New func "ShowFunc" **/
        public override void ShowFunc()
        {
            Console.WriteLine("Employer");
        }
    }
    /** Main **/
    class KindaMain
    {
        static void Main()
        {
            /** worker array **/
            Employee[] worker = new Employee[]
            {
                new Employee("Base Dude"),
                new Employee("Base Dude 2"),
                new Employer("Boss Dude")
            };
            /** Show Info **/
            for (int i = 0; i < worker.Length; i++)
            {
                worker[i].ShowName();
                worker[i].ShowFunc();
                Console.WriteLine();
            }
        }
    }
}
}

此输出如下:

Base Dude
Employee

Base Dude 2
Employee

Boss Dude
Employee

输出应该是这样的:

Base Dude
Employee

Base Dude 2
Employee

Boss Dude
Employer

任何人都可以帮我理解我做错的地方。真的找不到它......

更新: 不知何故,我设法无法关闭评论,所以整个方法都被注释掉了。因为我正在研究nano,我没有注意到这一点,就像很多朋友一样。很抱歉这篇文章。 我应该删除这篇文章吗?

2 个答案:

答案 0 :(得分:0)

我不确定你的评论中是否只是一个错误,但在你的雇主课程中你注释掉了ShowFunc方法,因此将调用Employee类上的ShowFunc方法,从而产生“Employee”。

如果只是一个错误,请尝试单步执行代码,以便查看执行的方法。

答案 1 :(得分:0)

我认为您的问题是您没有关闭评论/** New func "ShowFunc",而是评论ShowFunc覆盖..

尝试/* New func "ShowFunc" */