c# - C#中不调用基类构造函数的继承问题

标签 c# inheritance constructor

我想知道为什么我在下面的代码中没有收到错误。我没有在基类中定义构造函数,但在派生类中定义了一个。代码仍然按预期运行。有人可以帮助我摆脱困惑吗。

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/

相关文章:

c# - 这是生成一串随机字符的好方法吗?

python - __init__() 缺少 1 个必需的位置参数 : 'quantity'

ios - 未能找到类型 MvxViewModelLoader MvvmCross IOS 的构造函数

model - 如何在 Sencha 触摸模型中创建构造函数?

c++ - 构造函数 C++ 中未定义大小的数组

C#泛型和继承

c# - 用户可定义的布局(在运行时)

c# - 这种继承特性的用例是什么?

Scala - 在包含未实现变量的 Trait 中使用字符串插值

python:从内置类型列表继承,如何访问新类中的元素?