我想知道为什么我在下面的代码中没有收到错误。我没有在基类中定义构造函数,但在派生类中定义了一个。代码仍然按预期运行。有人可以帮助我摆脱困惑吗。
class Shape
{
public void Area()
{
Console.WriteLine("I am a shape");
}
}
class Circle : Shape
{
double radius;
const double pi = 3.14;
public Circle(double rad)
{
radius = rad;
}
public new double Area()
{
return pi * radius * radius;
}
}
代码编译完美,并给出了我想要的结果。 谢谢,
class Progam
{
static void Main(string[] args)
{
Shape s1 = new Shape();
s1.Area();
Shape s2 = new Circle(10);
s2.Area();
Circle c1 = new Circle(4.0);
Console.WriteLine(c1.Area());
}
}
最佳答案
如果没有定义其他构造函数,将自动执行默认的基本构造函数(即不带参数)。
当你没有显式定义构造函数时(就像你的问题),默认构造函数是隐式定义的
关于c# - C#中不调用基类构造函数的继承问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53008486/