![](/img/trans.png)
[英]Why does the call to a parent class constructor not call the parent's methods that are overriden in the child class?
[英]In .NET, does a parent class' constructor call its child class' constructor first thing?
public class Parent
{
Child child1;
public Parent()
{
child1.Name = "abc";
}
...
}
获取一个NullReferenceException。 我以为Parent()构造函数首先调用Child()构造函数,以便以后可以在Parent()构造函数中访问child1对象?
您需要创建子实例; 可以按照定义对其进行初始化:
Child child1 = new Child();
或在Parent构造函数中:
public Parent(){
child1 = new Child();
child1.Name = "Andrew";
}
父类的构造函数不会为其成员调用构造函数。 如果成员是引用,则将其设置为null。 您需要通过调用child1 = new Child
来显式分配它
成员不是隐式构造的。 它们使用其默认值(即,引用类型成员为null
)初始化,这就是为什么child1
成员为null的原因。
您需要创建child1
的实例:
public Parent
{
child1 = new Child();
}
在旁注中,我认为您对继承的类的构造函数调用规则感到困惑。 如果您的Child
类继承了您的Parent
类,则将隐式调用Parent
类的默认(即无参数)构造函数(如果存在):
class Parent
{
protected string member;
public Parent()
{
member = "foo";
}
}
class Child : Parent
{
public Child()
{
// member is foo here; Parent() is implicitly called
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.