问候。我有以下类(class):
public class Ship
{
public enum ValidShips
{
Minesweeper,
Cruiser,
Destroyer,
Submarine,
AircraftCarrier
}
public enum ShipOrientation
{
North,
East,
South,
West
}
public enum ShipStatus
{
Floating,
Destroyed
}
public ValidShips shipType { get; set; }
public ShipUnit[] shipUnit { get; set; }
public ShipOrientation shipOrientation { get; set; }
public ShipStatus shipStatus { get; set; }
public Ship(ValidShips ShipType, int unitLength)
{
shipStatus = ShipStatus.Floating;
shipType = ShipType;
shipUnit = new ShipUnit[unitLength];
for (int i = 0; i < unitLength; i++)
{
shipUnit[i] = new ShipUnit();
}
}
}
我想像这样继承此类:
public class ShipPlacementArray : Ship
{
}
这是有道理的。
我想知道的是如何删除基类的某些功能?
例如:
public ShipUnit[] shipUnit { get; set; } // from base class
我希望它是:
public ShipUnit[][] shipUnit { get; set; } // in the derived class
我的问题是如何实现完全隐藏基类shipUnit的代码?
否则,我将在派生类中最终获得两个shipUnit实现。
感谢您的时间。
ShipPlacementArray仅处理一艘船。但该数组反射(reflect)了船舶可以放置的方向。
最佳答案
以我的经验,每次我想从继承的类的类中删除一个属性时,我的类设计都是有缺陷的。解决此问题的一种方法是创建一个没有ShipUnit属性的新基类,然后两次继承该基类,一次是针对具体的Ship类型,一次是针对具体的ShipPlacementArray类型。在这两个子类中,您都可以根据需要实现ShipUnit。