关于构造函数继承的两点注意
来源:互联网 发布:东莞网站排名优化 编辑:程序博客网 时间:2024/04/30 03:54
1,如果基类没有提供默认构造函数,派生类必须使用 base 显式调用基构造函数。
这是从MSDN上看到的一句话(参考http://msdn.microsoft.com/zh-cn/library/ms173115(v=VS.80).aspx)
一开始还真没太引起过注意,最近才发现这个问题,实例如下
class B
{
}
class BB : B
{
public BB(int i)
{ }
}
class BBB : BB
{
public BBB(int i)
{ }
}
这个时候编译器在BBB类中报错说 BB类中没有不带参数的构造函数
而BB类之所以没报同样的错误,是因为B类中会自动添加不带参数的构造函数,
解决办法,当然是在BB类中加上默认的构造函数了,可实际项目中又不想声明不带参数的实例(禁用new BBB())
所以只能在BBB类中使用 base 显式调用基构造函数。
改造如下
class BBB : BB
{
public BBB(int i)
: base(i)
{ }
}
问题解决。
2.关于构造函数使用 base的执行顺序及结果
实例如下
class A
{
public A(int i)
{
Index = i + 1;
Console.WriteLine("A:" + Index.ToString());
}
public int Index
{ get; set; }
}
class AA : A
{
public AA(int i)
: base(i)
{
Index = i;
Console.WriteLine("AA:" + Index.ToString());
}
}
调用:
AA aa = new AA(10);
Console.WriteLine(aa.Index.ToString());
结果:
A:11
AA:10
10
由此可见,首先执行了父类A的构造函数,
然后执行AA的构造函数,
并且AA的构造函数覆盖了A构造函数,所以aa.Index结果为10
- 关于构造函数继承的两点注意
- 关于继承的构造,函数的调用
- JAVA关于构造函数的继承
- 关于构造函数继承的一些问题
- 使用execvp()函数需要注意的两点
- 使用execvp()函数需要注意的两点
- 构造函数写两点之间的距离
- 构造函数的继承
- 继承的构造函数
- 构造函数的继承
- 构造函数的继承
- 构造函数的继承
- 构造函数的继承
- 关于Javascript定义函数和this使用的两点注意的地方
- 关于C++的构造函数的几点注意
- 关于C#中构造函数的继承的问题
- 关于多继承的时候构造函数的实现
- Java -- 一条关于继承构造函数的题目
- SQL 7.9 游标,row_number() ,update的另一种写法
- 解决XMLHttpRequest中文乱码问题
- jqGrid与Struts2的结合应用(四) —— 丰富多彩的Pager Bar
- C#会重蹈覆辙吗?系列之3:事件背后的臃肿设计哲学
- c++ , java unwind 展开过程 ,看不太懂
- 关于构造函数继承的两点注意
- 26条开车心得+车辆出险保险索
- 新版中日交流标准日本语初级第三课之基本课文I
- 神贴留念
- MySQL导入导出数据库
- Ubuntu Server 安装桌面
- 35 个你也许不知道的Google开源项目
- VS2008下使用Newtonsoft.Json对JSON的序列化与反序列化
- [sql server] 在isql、osql、sqlcmd中调用脚本执行