我正在用视频学习C#,我有一个问题。
实现多态性时,通过接口和覆盖实现它有什么区别?
我认为它们在可扩展性方面都很好,因为它们都可以简单地创建一个新类来扩展。
如果我们使用Interface实现多态性,是否有更好的观点? 或者它只取决于具体情况?
任何抽象或理论上的答案都可以。谢谢。
答案 0 :(得分:1)
如果需要实现类的共享方法或属性,则可以使用抽象类而不是接口。所以,我在下面提供了一个例子。
如您所见,对于两个实现,接口示例 MessageText 方法共享。
public interface IMessageSender
{
void SendMessage();
}
public class EmailSender : IMessageSender
{
public void SendMessage()
{
Console.WriteLine(MessageText());
}
private string MessageText()
{
return "Message to send !";
}
}
public class SmsSender : IMessageSender
{
public void SendMessage()
{
Console.WriteLine(MessageText());
}
private string MessageText()
{
return "Message to send !";
}
}
您可以将抽象类用于共享方法或此类属性;
public abstract class MessageSender
{
public abstract void SendMessage();
protected string MessageText()
{
return "Message to send !";
}
}
public class EmailSender : MessageSender
{
public override void SendMessage()
{
Console.WriteLine(MessageText());
}
}
public class SmsSender : MessageSender
{
public override void SendMessage()
{
Console.WriteLine(MessageText());
}
}
答案 1 :(得分:0)
在接口的帮助下,您也可以实现多重继承,而如果使用抽象类和方法重写,则无法实现多重继承C#。更多关于界面的使用将帮助您实现依赖注入(您可以稍后了解它)并减少代码的依赖性。