【发布时间】:2018-05-13 06:11:44
【问题描述】:
namespace Sample
{
public class Program
{
static int x;
public Program(int Y) {
x = Y;
Console.WriteLine("one value base class constructor called");
}
static void Main(string[] args)
{
Program prog = new s(10);
Console.ReadKey();
}
}
public class s: Program {
public s(int k):base(10)
{
Console.WriteLine("derived class constructor called");
}
}
}
为什么要先调用基类构造函数?如果我在基类中定义了参数化构造函数,那么派生类构造函数必须将值从派生类传递给基类构造函数。
我想知道为什么它是强制性的?如果没有值传递给基类构造函数,则编译器会给出错误消息“没有给定的参数对应于所需的形参”。
我不是在问我是否必须将值传递给基类,但我的问题是为什么我必须这样做?为什么要先调用基类构造函数?
【问题讨论】:
-
这不是继承的副作用吗?
-
这是继承的工作方式,你从基础派生。
标签: c# inheritance constructor