Lin*_*ina 6 c# java inheritance
这里有没有人有关于何时用户继承以及何时使用标识符的意见?
继承示例:
class Animal
{
public int Name { get; set; }
}
class Dog : Animal {}
class Cat : Animal {}
Run Code Online (Sandbox Code Playgroud)
标识符示例:
class Animal
{
public int Name { get; set; }
public AnimalType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在什么情况下我应该选择哪种解决方案以及它们的优缺点是什么?
/丽娜
这取决于您需要在系统中执行的操作类型.例如,如果您有一些常见的操作应该以不同的方式为每个对象完成,那么应该使用继承,例如:
class Shape
{
public abstract void Draw();
}
class Circle : Shape
{
public override void Draw()
{
/* Custom implementation for Circle. */
}
}
class Box : Shape
{
public override void Draw()
{
/* Custom implementation for Box. */
}
}
Run Code Online (Sandbox Code Playgroud)
另一方面,如果某些类型和对象更像它的属性,你应该使用你所谓的"标识符":
enum Color
{
Red,
Green,
Blue
}
class Box
{
public Color BoxColor { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你可以在这里使用继承(但它看起来不太好):RedBox,BlueBox等.区别在于所有盒子(甚至是不同颜色的盒子)都会以相同的方式处理,它们的行为也很常见.
如果继承类(示例中的 Cat 和 Dog)具有不同的接口(方法或字段),或者它们用于选择不同的行为,我会使用继承。例如,在实际项目中,我有一个用于生成 HTML 代码的基类。根据情况,我创建正确的子类,生成正确的 HTML。这些类具有(大部分)相同的接口,但它们的行为非常不同,我不想通过 if 或 switch 选择它。