class2 的继承变量不同于 class1 (C#)

inherited variable of class2 is different from class1 (C#)

我刚刚制作了一个 class 形状和另外 2 个 class 形状('Triangle' 和 'Square'),它们继承自 'Shapes'。

public class Shapes
{
    private int sides;
}

public class Triangle : Shapes
{
    public void init()
    {
        int sides = 3;
        throw new System.NotImplementedException();
    }
}

public class Square : Shapes
{
    public void init()
    {
        int sides = 4;
        throw new System.NotImplementedException();
    }
}

代码使用Classdiagram设计

问题:我应该如何调用 class 才能显示形状有多少条边?

谢谢

您需要在 class 上添加一个 属性,它具有这样的访问器

public class Shapes
{
    private int sides;

    public int NumberOfSides { get { return sides; } } 
}

那你可以去mySquare.NumberOfSides

您需要一个受保护的成员 sides,它在每个形状的初始部分中使用:

public class Shapes
{
    protected readonly int sides;
    public int NumberOfSides { get { return sides; } } 
}

public class Triangle : Shapes
{
    public Triangle()
    {
        this.sides = 3;
    }
}

public class Square : Shapes
{
    public Square()
    {
        this.sides = 4;
    }
}

正如 Farhad Jabiyev 提到的,使用构造函数是初始化新实例的常用方法(参见我上面的代码)

现在,当您调用 Shape#NumberOfSides 时,Triangle 会得到 3 个,Square 会得到 4 个:

Shape square = new Square();
int number = square.NumberOfSides();