接口与抽象类
本文关键字:抽象类 接口 | 更新日期: 2023-09-27 18:00:09
可能重复:
接口还是抽象类?
我有一组类定义如下:
namespace VGADevices.UsingAbstractClass
{
public abstract class VGA
{
public abstract int HorizontalResolution { get; set; }
public abstract int VerticalResolution { get; set; }
}
public class LCDScreen : VGA
{
public override int HorizontalResolution { get; set; }
public override int VerticalResolution { get; set; }
}
} // namespace VGADevices.UsingAbstractClass
namespace VGADevices.UsingInterfaces
{
public interface IVGA
{
int HorizontalResolution { get; set; }
int VerticalResolution { get; set; }
}
public class LCDScreen : IVGA
{
public virtual int HorizontalResolution { get; set; }
public virtual int VerticalResolution { get; set; }
}
} // namespace VGADevices.UsingInterfaces
客户端代码,我可以选择:
class Computer
{
public VGA VGAOutput { get; set; }
}
或
class Computer
{
public IVGA VGAOutput { get; set; }
}
我在某个地方读到使用接口更好,但为什么呢?使用抽象类,我也可以定义接口,并添加数据成员,那么为什么接口是首选方法呢?二进制替换在这里也起作用吗?
谢谢
Chris
您可以继承(即实现)多个接口。您不能从多个抽象类继承
查看这篇文章:
http://www.codeproject.com/KB/cs/abstractsvsinterfaces.aspx
我看到的最重要的功能:多重继承(接口可以实现多个接口,抽象只能从一个继承)同质性(我有两个具有相同接口的对象,但它们实际上不是同一个对象,不应该共享任何代码)