我的项目的结构如下:
// Abstract class
public abstract class Job
{
public abstract JobResult Run();
}
public abstract class JobResult { }
// Concrete implementer
public class Job1 : Job
{
public override Job1Result Run() { }
}
public class Job1Result : JobResult { }
Run Code Online (Sandbox Code Playgroud)
每个具体作业都继承自 Job 并实现 Run 方法,该方法返回 JobResult 的具体类。
但是,当我这样做时,我收到编译器错误:
Job1.Run()':返回类型必须是 JobResult 以匹配重写的成员 Job.Run()
重写抽象方法时真的不能返回返回类型的继承对象吗?
这就是继承的整个概念。返回父类被认为是这里的一个特性。但是没有什么可以阻止您Job1Result返回Job1
public JobResult Run()
{
return new Job1Result();
}
Run Code Online (Sandbox Code Playgroud)
然后 Job1.Run() 的调用者必须知道正确的返回类型并将其转换为访问Job1Result特定于该类的方法
| 归档时间: |
|
| 查看次数: |
1528 次 |
| 最近记录: |