【发布时间】:2011-06-30 06:57:25
【问题描述】:
我必须创建一个包含课程类别的课程管理系统:
Cooking, sewing and writing courses
cooking 和writing 各有 2 门课程(意大利语、海鲜、创意写作和商务写作)。这将创建派生摘要:
abstract course -> abstract cooking -> concrete seafood
抽象的烹饪和写作有共同的领域和一些共同的方法,但它们也有抽象的方法,在基类中是抽象的。
这可以在 C# 中完成吗?如果我使派生的抽象类方法抽象,Visual Studio 说它们隐藏了基类抽象,然后具体的类方法有错误说基类必须是抽象的(它是但不能注册)。我一直在寻找答案。我知道在 C# 中使用了单继承,但继承会沿着链条进行。最佳答案是什么?
这是一个代码 sn-p - 我希望它能澄清问题:
public abstract class Course
{
public abstract void AddStudent(StudentName sn, int f);
public abstract decimal CalculateIncome();
}
public abstract class WritingCourse : Course
{
public void AddStudent(StudentName sn, int f)
{
//Add student
}
public abstract decimal CalculateIncome(); // can only be claculated in concrete
}
public class BusinessWritCourse : WritingCourse
{
public void AddStudent(StudentName sn, int f):
base(sn, false){}
public decimal CalculateIncome()
{
return //do stuff
}
}
public class SewingCourse : Course
{
public override void AddStudent(StudentName sn, int f)
{
//do stuff
}
public override decimal CalculateIncome()
{
return //do stuff
}
}
【问题讨论】:
-
你能贴出你遇到的问题的示例代码吗?
标签: c# .net c#-4.0 abstract-class multiple-inheritance