C#派生类不会重写基方法
目前正在处理对象和类。 我正在学习老师给我举的一个例子,但它并没有发挥应有的作用。 请注意,我是在ubuntu上工作,而不是在windows上工作,我不确定这是否会影响什么C#派生类不会重写基方法,c#,linux,polymorphism,ubuntu-16.04,derived-class,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)
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
Employer
谁能帮我理解我哪里做错了。真的找不到
更新:
不知何故,我未能关闭注释,因此整个方法都被注释掉了。因为我在研究nano,我没有注意到这一点,就像很多朋友一样。很抱歉发这篇文章。
我是否应该删除此帖子?我不确定这是否只是您在此处的评论中的错误,但在您的雇主类中,您已经注释掉了ShowFunc方法,因此将调用Employee类上的ShowFunc方法,从而生成“Employee”
如果只是一个错误,请尝试单步执行代码,以便查看执行的方法。我认为您的问题在于您没有关闭注释
/**New func“ShowFunc”
,它正在注释ShowFunc重写
尝试
/*New func“ShowFunc”*/
您的ShowFunc
在Employer
中被注释掉,因此它将采用基类实现。您正在使用ShowFunc
方法打印类型名称,该方法经过硬编码以返回“Employee”
。Employer
中的覆盖方法被注释掉了,因为注释行上写着New func“ShowFunc”
没有结束符**/
,因此您的覆盖方法不会被编译和调用。这更像是注释而不是答案。是的,这是正确的。我现在觉得自己真的很傻,真的很抱歉发这样一篇愚蠢的帖子。将尽快更新。
Base Dude
Employee
Base Dude 2
Employee
Boss Dude
Employer