执行从 Parent class 到 Child class 的构造函数
Executing constructor from Parent class to Child class
在什么情况下我应该为子class执行父class的构造函数?为什么要使用 "base" 保留字?
示例:
如果您不对子构造函数使用 :base 词。
父类的默认构造函数将被执行。
如果你在 base class 中有一些基本构造函数并且你有一些字段并且想使用基本构造函数填充它你应该使用 base 关键字。
基 class 的构造函数总是 被调用。或更准确地说,一个 基础class 的构造函数。如果您不指定是哪一个(通过使用 base
保留字),则调用基础 class 的默认构造函数(即没有参数的构造函数)。如果基 class 没有不带参数的构造函数,则会发生编译错误。使用 base
关键字,您指定要调用某个构造函数。这里有一些简单的例子:
public class Base
{
private int _a;
public Base() // default ctor
{_a = 0;}
public Base(int a) // a ctor with an argument
{_a = a;}
}
public class Derived : Base
{
public Derived() : base(2) // call the ctor with argument "2"
{}
public Derived(bool b) // uses the ctor without argument of the base class (_a will stay 0)
{
}
}
这里的关键词base
是作为基地名称class的通用占位符。语法上唯一允许的另一个词是 this
(如果你想调用 same class 的构造函数)
在什么情况下我应该为子class执行父class的构造函数?为什么要使用 "base" 保留字?
示例:
如果您不对子构造函数使用 :base 词。
父类的默认构造函数将被执行。
如果你在 base class 中有一些基本构造函数并且你有一些字段并且想使用基本构造函数填充它你应该使用 base 关键字。
基 class 的构造函数总是 被调用。或更准确地说,一个 基础class 的构造函数。如果您不指定是哪一个(通过使用 base
保留字),则调用基础 class 的默认构造函数(即没有参数的构造函数)。如果基 class 没有不带参数的构造函数,则会发生编译错误。使用 base
关键字,您指定要调用某个构造函数。这里有一些简单的例子:
public class Base
{
private int _a;
public Base() // default ctor
{_a = 0;}
public Base(int a) // a ctor with an argument
{_a = a;}
}
public class Derived : Base
{
public Derived() : base(2) // call the ctor with argument "2"
{}
public Derived(bool b) // uses the ctor without argument of the base class (_a will stay 0)
{
}
}
这里的关键词base
是作为基地名称class的通用占位符。语法上唯一允许的另一个词是 this
(如果你想调用 same class 的构造函数)