【发布时间】:2011-06-22 21:20: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; }
}
我在某处读到使用接口更好,但为什么呢? 使用抽象类,我也可以定义一个接口并添加数据成员,那么为什么接口是首选方法呢? 二进制替换在这里也起作用吗?
谢谢
克里斯
【问题讨论】:
-
克里斯,您应该在 SO 上搜索此问题的现有完全重复项,然后删除此问题。