我有三个类,每个类将返回略有不同的结果。
// interfact to a king
public interface IKing{
public Result Get();
}
// main abstract class
public abstract class King:IKing{
public abstract Result Get();
}
// main abstract result
public abstract class Result{
public int Type {get;set;}
}
// KingA result
public class ResultA:Result{
...
}
// KingB result
public class ResultB:Result{
...
}
// concrete implementations
public class KingA:King{
public override ResultA Get(){
return new ResultA;
}
}
public class KingB:King{
public override ResultB Get(){
return new ResultB
}
}
这将不起作用,因为King
的Get
重写方法需要Result
类,并且将不接受其子级ResultA
和ResultB
。
我可以采取更好的方法吗?
参考方案
通常的方法是使用泛型。
public interface IKing<T> where T:Result{
T Get();
}
public class King<T> : IKing<T>
public abstract T Get();
}
public class KingA : King<ResultB> {
public override ResultA Get(){
return new ResultA();
}
}
public class KingB : King<ResultB> {
public override ResultB Get(){
return new ResultB();
}
}
编辑:固定语法。
编程练习 - public class HelloWopublic class HelloWorld { public static void main(String[] args) { // 变量保存成绩 int score = 53; // 变量保存加分次数 int count = 0; //打印输出加分前成绩 S…
Java入门第一季 - public class HelloWopublic class HelloWorld { public static void main(String[] args) { // 变量保存成绩 int score = 53; // 变量保存加分次数 int count = 0; //打印输…
将字段限制为类的实例并同时实现接口 - javaJava允许将子类实例分配给类类型的字段,例如:public class BaseClass { } public class SubClass extends BaseClass { } public class Example { private BaseClass field1; public void assign(SubClass subclass…
对Java接口实现的怀疑 - javainterface Device { public void doIt(); } public class Electronic implements Device { public void doIt() { } } abstract class Phone1 extends Electronic { } abstract class Phone2 ext…
从列表中获取价值(C#UWP) - c#我有课 public class RootObject { public int id { get; set; } public int parent_id { get; set; } public string status { get; set; } public string order_key { get; set; } public string …