首页 新闻 搜索 专区 学院

接口中方法传入基类,实现接口的类方法出入子类,报错

0
悬赏园豆:10 [已解决问题] 解决于 2016-08-22 08:32

如下

基类:

public class BaseEntity 
{

}

子类:

public class MyEntity:BaseEntity 
{

}

接口:

interface IA
{
    void Print(BaseEntity baseEntity);
}

接口实现类:

public Class B:IA
{
  void Print(MyEntity myEntity)
  {
  }
}

实现接口中出入参数为什么不能用子类,怎么才能让实现接口类中的方法入参是子类实例?

成群的主页 成群 | 初学一级 | 园豆:160
提问于:2016-08-17 11:10
< >
分享
最佳答案
1

最简单的办法是用泛型约束。

interface IA<T>:Where T:BaseEntity
{
    void Print(T baseEntity);
} 
public Class B:IA
{
  void Print(MyEntity myEntity)
  {
  }
}

 

收获园豆:10
吴瑞祥 | 高人七级 |园豆:28841 | 2016-08-17 13:31

嗯  这个方法不错。顶一个

田麦成 | 园豆:1984 (小虾三级) | 2016-08-17 16:28
其他回答(3)
0

反正可以替换嘛,你类B中的print方法就传BaseEntity,真正用的时候在方法里面强制转换呗。。。

这就跟List<BaseClass>跟List<SubClass>不能直接转换一样,接口定义的参数是什么就是什么。

顾晓北 | 园豆:10215 (专家六级) | 2016-08-17 11:22
0

你为什么不考虑让BaseEntity实现接口?这样不就不用转换了么?

Daniel Cai | 园豆:10374 (专家六级) | 2016-08-17 13:26
1

不要纠结了……实现接口是实现接口的事。你在调用这个方法的时候,传递子类就行了。

田麦成 | 园豆:1984 (小虾三级) | 2016-08-17 15:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册