首页 新闻 会员 周边 捐助

new创建子类对象的时候,父类对象会被自动创建么?

0
悬赏园豆:5 [已解决问题] 解决于 2011-10-20 20:09

疑问: 1、new 子类对象的时候,会生成父类对象么? 2、调用子类的构造函数的时候,为什么会先调用父类的构造函数呢?

激流勇进的主页 激流勇进 | 菜鸟二级 | 园豆:206
提问于:2011-10-20 12:04
< >
分享
最佳答案
1

1. 当然不会。调用父类构造函数和生成一个父类的对象是两个概念。比如你有两个类A和B,B继承自A。那么你new B()的时候,只创建了一个B类型的对象(当然它可以转成A类型),但是整个过程中只有1个对象被创建了。

2. 因为子类的逻辑要后执行。举例:

class A
{
public int Number { get; set; }
public A()
{
Number = 100;
}
}

class B : A
{
public B()
{
Number = 200;
}
}

如果问你new B()之后Number的值,你肯定会说200吧?因为100太奇怪了。就是这个道理,子类中的逻辑要确保最后执行,否则你岂不是永远修改不了Number的初始值?先执行父类的构造函数还有一个重要原因就是,子类的构造函数可能会用到一些成员,而这些成员是在父类的构造函数中初始化的。

收获园豆:5
水牛刀刀 | 大侠五级 |园豆:6350 | 2011-10-20 13:47

谢谢了!理解了

激流勇进 | 园豆:206 (菜鸟二级) | 2011-10-20 20:10
其他回答(1)
0

首先调用父类构造函数,再调用子类构造函数

SnowDreamist | 园豆:205 (菜鸟二级) | 2011-10-20 12:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册