Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
3年前关闭。
我喜欢C#,但找不到解决方案。这显然是一种简化。
假设我们有动物,狗,猫,家具,椅子,TallDog类。
动物有个名字。家具有高度。
但。突然出现了TallDog。它有一个名字和一个高度。
您如何避免在TallDog和Furniture中重复高度?
想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题。
3年前关闭。
我喜欢C#,但找不到解决方案。这显然是一种简化。
假设我们有动物,狗,猫,家具,椅子,TallDog类。
动物有个名字。家具有高度。
但。突然出现了TallDog。它有一个名字和一个高度。
您如何避免在TallDog和Furniture中重复高度?
abstract class Animal
{
public string Name { get; set; }
public Animal(string name)
{
Name = name;
}
}
class Dog : Animal
{
public Dog(string name)
: base(name)
{
}
}
class Cat : Animal
{
public Cat(string name)
: base(name)
{
}
}
abstract class Furniture
{
public int Height { get; set; }
public Furniture(int height)
{
Height = height;
}
}
class Chair : Furniture
{
public Chair(int height)
: base(height)
{
}
}
class TallDog : Animal
{
public int Height { get; set; }
public TallDog(string name, int height)
: base(name)
{
Height = height;
}
}
最佳答案
您应该记住,“好的OO”主要是关于对象的行为。存在对象(和类)以将某些“概念脱离现实”映射到您作为应用程序基础的“模型”中。
因此:您不使用继承在此处或此处保存一行代码。您将“ B扩展A”标签放在B上是因为在模型的指导下这样做是合理的。
有鉴于此:对于完全错误的原因,使用继承的人来说,您的想法就是将高脚狗当作家具!
因此:只需忘掉这个想法即可;并按照注释中的建议进行操作:创建合理的接口,并将这些类放在有意义的位置。
10-02 02:27