C# 接口与抽象类

C# 接口与抽象类,c#,interface,abstract,C#,Interface,Abstract,可能重复: 我有一组定义如下的类: namespace VGADevices.UsingAbstractClass { public abstract class VGA { public abstract int HorizontalResolution { get; set; } public abstract int VerticalResolution { get; set; } } public class LCDScr

可能重复:

我有一组定义如下的类:

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; }
}

我在某个地方读到,使用接口更好,但为什么? 使用抽象类,我可以定义一个接口并添加数据成员,那么为什么接口是首选方法呢? 二进制替换在这里也起作用吗

多谢各位

Chris

您可以继承(即实现)多个接口。您不能从多个抽象类继承

请查看本文:

我看到的最重要的特征是: 多重继承(接口可以实现多个接口,抽象只能从一个接口继承)
同质性(我有两个具有相同接口的对象,但它们实际上不是同一个对象,不应共享任何代码)

Chris,您应该搜索此问题的现有副本,然后删除此问题。您不继承接口,而是实现它们。在这方面,将它们与抽象类进行比较是毫无意义的;它们是根本不同的东西。呃,那就更不清楚了。
class Computer
{
        public IVGA VGAOutput { get; set; }
}