当谈到实现时,我应该如何决定使用基类型还是接口(interface)?我试图解决几个例子,但我没有得到完整的想法:(
关于如何以及为什么的例子将不胜感激..
最佳答案
基类,无论是否抽象,都可以包含已实现的成员。接口(interface)不能。如果您的所有实现都将以相似的方式执行,那么基类可能是可行的方法,因为您的所有子类都可以共享基类成员的相同实现。如果他们不打算共享实现,那么接口(interface)可能是可行的方法。
例子:
class Person
{
string Name { get; set; }
}
class Employee : Person
{
string Company { get; set; }
}
Employee 继承自 Person 是有意义的,因为 Employee 类不必定义 Name
属性,因为它共享实现。
interface IPolygon
{
double CalculateArea();
}
class Rectangle : IPolygon
{
double Width { get; set; }
double Height { get; set; }
double CalculateArea()
{
return this.Width * this.Height;
}
}
class Triangle : IPolygon
{
double Base { get; set; }
double Height { get; set; }
double CalculateArea()
{
return 0.5 * this.Base * this.Height;
}
}
因为 Rectangle
和 Triangle
具有如此不同的 CalculateArea
实现,所以它们从基类继承是没有意义的。
如果你创建了一个基类,并且发现只有包含抽象成员,你还不如使用一个接口(interface)。
而且,正如 j__m 所述,您不能从多个基类继承,但可以实现多个接口(interface)。
我通常先定义接口(interface),如果我发现自己在实现中重复代码,我会创建一个实现该接口(interface)的基类,并使我的实现继承自它。
关于c# - 如何在新实现的接口(interface)或基类之间做出决定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15583896/