猿问

接口的继承中的一个疑问


1     interface IA
2     {
3         int Method();
4     }
5     interface IB : IA
6     {
7         new double Method();
8     }
9     class MyClass : IB
10     {
11         public double Method()
12         {
13             ...
14         }
15
16         int IA.Method()
17         {
18             ...
19         }
20     }

我的问题是:在IB中我把IA的方法给隐藏了,

为什么在MyClass中还要实现IA中的Method()

。我试过了,如果不实现,会产生编译错误的。



江户川乱折腾
浏览 533回答 2
2回答

芜湖不芜

MyClass在语法上是应该可以转换为IA接口的,转换为IA接口的时候就可以调用IA的int Method()了,你不实现IA的方法,那就出错了。

蝴蝶刀刀

MyClass间接实现了IA,那么就会有这样的代码:IA ia = new MyClass();int n = ia.Method();因此就必须要显式实现IA中的方法。MyClass myClass = new MyClass();double d = myClass.Method();而直接调用MyClass的Method方法,得到的是double类型。
随时随地看视频慕课网APP
我要回答