成员变量和传递给方法的参数之间的C#区别

时间:2018-11-11 16:49:24

标签: c# inheritance methods arguments member

我正在做一个非常具体的说明的作业,如果有什么要求,我将在我创建的代码下方发布。但是,简而言之,我要创建一个BasicShape抽象类,以及一个CircleRectangle子类。每个子类都有一种计算形状面积的方法。使用成员变量计算面积。但是,在下面的代码中,这些成员变量从未分配值。我对如何分配给他们感到困惑,因为CircleRectangle方法还要求将参数传递给他们。这些参数{{1}的xyrCircle的{​​{1}},w在主程序中指定生成了形状的新实例,但是这些值似乎也不起作用,因为输出始终为0。传递给方法的参数与成员变量之间有什么关系?通过调用lRectangle实例时设置的参数来给成员变量赋值,怎么办?

这是我的代码:

Circle

以下是分配说明:

定义一个称为BasicShape的纯抽象基类。 BasicShape类应具有以下成员:

私有成员变量:     面积,用于容纳形状面积的两倍。

公共成员方法:     getArea():此方法应返回成员变量区域中的值。     calcArea():此方法应该是纯虚拟方法。

接下来,定义一个名为Circle的类。它应该从BasicShape类派生。它应该具有以下成员:

私有成员变量:     centerX,一个整数,用于保存圆心的x坐标。     centerY,一个整数,用于保存圆心的y坐标。     半径,用于保存圆半径的双精度值。

公共成员方法:

Circle(int x,int y,int r):接受centerX,centerY和半径的值。应该调用覆盖的calcArea 如下所述。

genCenterX:返回centerX中的值

genCenterY:返回centerY中的值

calcArea():计算圆的面积(面积= 3.14159 *半径*半径),并将结果存储在继承的成员区域中。

接下来,定义一个名为Rectangle的类。它应该从BasicShape类派生。它应具有以下成员: 私有成员变量:

width,用于保存矩形宽度的整数  长度,用于保存矩形长度的整数

公共成员方法:

Rectangle(int w,int l):接受宽度和长度的值。应该调用下面描述的覆盖的calcArea方法。

getWidth():返回宽度值。 getLength():返回长度的值 calcArea():计算圆的面积(面积=长*宽),并将结果存储在继承的成员区域中。

创建这些类之后,创建一个定义了Circle对象和Rectangle对象的主程序。

演示每个对象正确计算并报告其面积。

1 个答案:

答案 0 :(得分:3)

您不将构造函数传递的值分配给成员变量。因此,当您调用 calcArea 时,将使用类型为int或double(默认为零)的默认值

来执行它
class Circle : BasicShape
{
    private int centerX;
    private int centerY;
    private double radius;

    public Circle(int x, int y, double r)
    {
        radius = r;
        // Now you are executing the calcArea using the value passed in
        calcArea();
    }      
    ....
}

class Rectangle : BasicShape
{
    private int width;
    private int length;

    public Rectangle(int w, int l)
    {
        width = w;
        length = l;
        calcArea();
    }
    ....
}

calcArea 的覆盖需要将成员变量设置为其他值,否则这些成员变量将使用其默认值(整数和双精度均为零)初始化,因此该方法无法产生有意义的结果。