这个问题听起来很常见,但我不知道应该如何实现它。
我的情景:
DirectionTile
? DirectionTile
的行为实施:
abstract class DirectionTile
{
public Point Direction;
public Tile Next => Board.GetTile(Coords + Direction);
}
正如您所看到的,属性Coords
将来自基类(?),即Tile
。
RailTile
和SailTile
都是DirectionTiles
。但是,我不能只从DirectionTile
继承,因为SailTile
需要从WaterTile
继承,这与案例2的关系Tile
(真的想要像这样使用多态)
我希望有人可以帮我解决这个问题,我无法解决。如果我的解释足够清楚,请告诉我。
答案 0 :(得分:1)
如果我理解正确,DirectionTile是由实体实现的行为。
仅使用接口IDirectionTile,为了防止多次实现,您可以提供扩展方法:
react
答案 1 :(得分:0)
这样做:
你的图表中的基础Tile将是你的基类/父类,所有其他类将是它的子类。然后它将继承Tile具有的属性和功能。
对于DirectionTile,我认为它是一个单独的实体/类,您将实例化WaterTile和RailTile
public abstract class Tile
{
private Point direction;
public Point Direction
{
get { return direction; }
set { direction = value; }
}
public abstract string someFunction();
}
现在继承属性和函数:
public class WaterTile : Tile
{
//all property and functions now are accessible from the Tile base class
private string somevariable;
public string Somevariable
{
get{return somevariable;}
set{somevariable=value;}
}
public override string someFunction()
{
//return "something";
}
}
public class SailTile : WaterTile
{ //if there are additional properties/functions in your WaterTile it will be accessible by this class (SailTile) but not to other class
//in this case Somevariable is accessible in this class
}