interface vs abstract class
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Interface or abstract class?
号
我有一组类定义如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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 |
客户代码,我可以选择:
1 2 3 4 | class Computer { public VGA VGAOutput { get; set; } } |
号
或
1 2 3 4 | class Computer { public IVGA VGAOutput { get; set; } } |
我在某个地方读到使用接口更好,但为什么呢?使用抽象类,我可以定义一个接口,还可以添加数据成员,那么为什么接口是首选方法呢?二进制替换在这里也起作用吗?
谢谢您
克里斯
您可以继承(即实现)多个接口。不能从多个抽象类继承
查看此日志:
http://www.codeproject.com/kb/cs/abstractsvsinterfaces.aspx
我看到的最重要的功能:多继承(接口可以实现多个接口,抽象只能从一个继承)同质性(我有两个具有相同接口的对象,但它们实际上不是同一个对象,不应该共享任何代码)