是这样的。。比如:class A
{
}class B:A
{}当我 B b=new B(); 的时候,是会在堆上创建2个类A和B呢?还是编译器会把A和B进行合并,只分配B(包括了A)。但是这样的话,调用A的构造函数初始化A的话,是怎么实现的?
{
}class B:A
{}当我 B b=new B(); 的时候,是会在堆上创建2个类A和B呢?还是编译器会把A和B进行合并,只分配B(包括了A)。但是这样的话,调用A的构造函数初始化A的话,是怎么实现的?
解决方案 »
- C#如何清除dataGridView的数据
- Wince连接通过wifi与电脑进行通信
- 有做GOOGLE AdWords API开发的看过来,帮帮忙~~亲爱的CSDN的各位鸟人们,大家新年好!为请看过来散分散分,到者有份!
- c#如何判断datarow的一个字段是否存在
- 关于动态编译资源文件的问题,牛人请进,探讨一下子。
- 怎么样绑定DataGrid.怎么样跳转页面.怎么样弹出msgBox提示窗口/
- c#怎样对ftp进行操作啊
- 请问这样的错误如何修改
- 如何在C#实现关机功能?
- 大家好:请问在C#中如何得到XML中的值呢?具体请看内容 在线呀.谢,
- 求 绘图 缩放思路
- 悲剧出现了,关于Linq,有图有真相。。。
只有一个对象就是b,但是在生成b时A、B两个类的构造函数都是执行了的,是先执行最基本的基类A的构造函数,在执行派生类B的构造函数。如果A类只有默认的无参的构造函数,那么生成b时就不用管A,直接用B b = new B();这句就是了。
如果A含有带参数的构造函数,生成B的对象时要调用A带参的构造函数,而不是调用A的默认构造函数时,B的构造函数就要小心了
Public B() : base(20//缺省值)
{
}
如果B的构造函数也含有和基类A构造函数相同类型的参数
Public B(type para) : base(para)
{
}
《你必须知道的.NET》http://www.cnblogs.com/anytao/archive/2007/09/14/must_net_catalog.html
谢谢wuyq11,那请问实例化派生类的时候,是不是基类也会实例化啊。。 就是会同时实例化多个类
我觉得执行上面的基类只是走一个因果流程,可以理解为执行A的构造函数后就有了A,之后才能生成B。先有A后才有B,因此生成B的对象前要认宗,完事之后就可以生成对象了,至于“认宗”的过程如果执行的基类构造函数不带参数那就纯粹是一个过程而已,不用去计较。但有些类构造函数带参是为了初始化一些内部变量,这种情况下执行带参的基类构造函数的参数就只能从派生类获得,所以实例化派生类B时就要多一个过程
这里不能画图 ...一绘图就一目了然了 ...派生类对象是分两部分的 ,上半部分是base类的 ,后面半部分是派生类特有 ...