问候。我有以下类(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。

10-02 04:29