【发布时间】:2016-09-16 21:56:16
【问题描述】:
好的,所以我在这里要做的是创建一个类数组。我的类 TEAMLEADER 派生自一个抽象类 Employee。但是,当我尝试在 Main 中创建 TEAMLEADER 的实例时,我收到一条错误消息,提示找不到 TEAMLEADER。
namespace Lab3
{
public abstract class Employee
{
protected string EmployeeName;
protected int EmployeeNumber;
protected double WeeklySalary;
public Employee (string EmployeeName, int EmployeeNumber, double WeeklySalary)
{
this.EmployeeName = EmployeeName;
this.EmployeeNumber = EmployeeNumber;
this.WeeklySalary = WeeklySalary;
}
public Employee(string EmployeeName)
{
assignID(EmployeeNumber);
}
public override string ToString()
{
return EmployeeName + " " + EmployeeNumber + " " + WeeklySalary;
}
protected virtual double CalcSalary()
{
return CalcSalary();
}//"Virtual" is a keyword that says, "This can be overriden in the derived class."
private static int assignID(int EmployeeNumber)
{
EmployeeNumber.ToString();
EmployeeNumber++;
return EmployeeNumber;
}
}
class Program
{
static void Main(string[] args)
{
Employee[] workerarray = new Employee[4];
workerarray[0] = new TeamLeader("Rachel", 18, 1000000.00, 52000000.00, true);
}
}
}
在一个单独的类/选项卡中是 TEAMLEADER 类。
public class TeamLeader:Employee
{
protected double AnnualSalary;
protected bool WeeklyGoal;
public override void CalcSalary()
{
if (WeeklyGoal == true)
{ CalcSalary = (AnnualSalary / 52) * 1.10; }
else (CalcSalary = AnnualSalary / 52);
}
public TeamLeader(string EmployeeName, int EmployeeNumber, double WeeklySalary, double AnnualSalary, bool WeeklyGoal):base(EmployeeName, EmployeeNumber, WeeklySalary)
{
this.WeeklyGoal = WeeklyGoal;
this.AnnualSalary = AnnualSalary;
}
}
问题出在我的主要方法中。我不明白为什么我不能创建 TeamLeader 的实例。它不是一个抽象类,所以 Main 不应该能够识别它并创建一个实例吗?
【问题讨论】:
-
是否在同一个命名空间中?您似乎缺少那部分代码。
-
它在同一个命名空间(或者应该是)但在不同的选项卡中。
-
你能发布整个团队领导文件吗?如果您使用的是 Visual Studio,请将光标放在 TeamLeader 中的 r 之后(在 Main 中)并点击 control-。 (control-(句号)。Viusal studio应该给你一个建议。
-
除非有命名空间代码,否则不存在。
-
TeamLeader 是否与您的主要功能在同一个程序集中?
标签: c# inheritance polymorphism abstract-class