多态、抽象和接口
本文关键字:接口 抽象 多态 | 更新日期: 2023-09-27 18:11:14
此代码编译无错误
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
是哪个(不像这种显式命名的解决方案)。
谢谢。
被重写的方法正在被调用。为了使用接口中的方法,你必须在…
这一行做一些事情。((IB).getName(s));
必须显式调用这些方法。
http://msdn.microsoft.com/en-us/library/ms173157.aspx在您的代码中,类CA中的getName方法实现了所有3个接口。如果它们有不同的含义,则必须使用显式接口实现:
public class CA : AC, IA, IB, IC
{
public override void getName(string s)
{
Console.WriteLine(s);
}
void IC.getName(string s)
{
// Your code
}
void IB.getName(string s)
{
// Your code
}
void IA.getName(string s)
{
// Your code
}
}
该实现将用于满足所有三个接口中的函数。
我猜你的类CA,实现了所有3个接口和抽象方法,在CA中被覆盖,因为它满足了你的类CA所需的所有实现,它不会抛出任何错误。