【发布时间】:2014-08-23 15:37:18
【问题描述】:
这段代码编译没有错误
class program
{
interface IA
{
void getName(string s);
}
interface IB
{
void getName(string s);
}
interface IC
{
void getName(string s);
}
public abstract class AC
{
public abstract void getName(string s);
}
public class CA : AC , IA, IB, IC
{
public override void getName(string s)
{
Console.WriteLine(s);
}
}
static void Main()
{
CA ca = new CA();
Console.ReadLine();
}
}
实现了哪个getName 方法?如果我们有多个具有相同方法名称的接口,那么只实现一个满足所有接口的方法就足够了吗?如果他们做不同的事情呢?请注意,我没有指定存在哪个getName(与此explicit naming 的解决方案不同)。
谢谢大家。
【问题讨论】:
-
该实现将用于满足所有三个接口中的功能。
-
@TrippKinetics 谢谢。如果我删除
override,那么编译器会抱怨抽象方法中的getName没有实现。所以这似乎是一个单向的事情。 -
@Zuzlx 在接口中声明的成员和在抽象类中声明的成员是不同的。为了满足接口,你必须实现一个方法,为了满足抽象类,你必须重写一个方法。而且因为你必须明确地说我的方法覆盖另一个你必须使用
override修饰符。
标签: c# inheritance interface polymorphism abstract-class