我有以下代码,我在C#visual Studio 2015中编译时遇到错误.
class Oval:Shape
{
private double major_axis, minor_axis;
public Oval(double Major_Axis, double Minor_Axis)
{
major_axis = Major_Axis;
minor_axis = Minor_Axis;
} //Constructor
}
class Circle:Oval
{
private double radius;
public Circle(double Circle_Radius) // Getting Error on this line
{
radius = Circle_Radius;
} //constructor
}
Run Code Online (Sandbox Code Playgroud)
由于Circle继承自Oval,在您创建Circle默认构造函数时,Oval在您的情况下调用.由于该构造函数接受2个参数,因此需要显式调用构造函数并提供它们:
class Circle : Oval
{
private double radius;
public Circle(double Circle_Radius) : base(0, 0) // change to whatever values
{
radius = Circle_Radius;
}
}
Run Code Online (Sandbox Code Playgroud)
所以A Circle是一个Oval,所以它有major_axis和minor_axis价值.你只是没有提供它们,因为它们是创建一个必需的值Oval.
当然你也可以添加一个默认公共构造为Oval不带任何参数,但是,让你创建一个椭圆形,没有major_axis和minor_axis两者似乎在你的代码的当前状态的唯一的构造要求.因此,您需要重新思考如何设计类.
修正错误:
由于缺少无参数构造函数(或您base()在构造函数中缺少使用方法)而导致发生错误(就像user3185569已经说过的那样)
修改您的代码:
显然您似乎缺乏.Net的一些基础知识,因此我决定考虑以下几点来重新编写您的代码:
一种。约定
有一些关于通用约定的规则应适用于您的代码。
成员通常以m或开头,_然后是memberName(骆驼纹)
属性通常按规则编写,PropertyName并且同样适用于方法
参数和变量只是像驼峰一样 parameterName
b。访问修饰符
我不知道您使用椭圆形和圆形,但是我想您想在Oval和之外访问它们Circle
我认为最好参考一下此处以阅读有关该主题的更多信息:https : //msdn.microsoft.com/zh-cn/library/ms173121.aspx
我已经重新编写了您的代码,以包括所有这些技巧(并解决了您的问题)
public class Oval:Shape
{
//Constructor
public Oval(double majorAxis, double minorAxis)
{
MajorAxis=majorAxis;
MinorAxis=minorAxis;
}
protected double MajorAxis{ get; set; }
protected double MinorAxis{ get; set; }
}
public class Circle:Oval
{
//Constructor
public Circle(double radius): base(radius,radius)
{
radius = Circle_Radius;
} //constructor
public double Radius
{
get
{
return MajorAxis;
}
set
{
MajorAxis = value;
MinorAxis = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)