C#类的继承,构造函数实现及其调用顺序
来源:互联网 发布:图片橡皮擦软件 编辑:程序博客网 时间:2024/05/16 15:29
/*--===------------------------------------------===---
作者:许明会
日期:类的派生和构造函数间的关系,调用层次及实现
日期:2008年1月18日 17:30:43
希望类有派生类,且有带参构造函数,则必须为其实现默认构造函数,并实现类层次中的所有派生类的默认构造函数。
若类没有实现带参构造,编译器将自动创建默认构造函数(无参构造函数),若类实现了带参构造,则编译器不会自动生成默认构造.
--===------------------------------------------===---*/
using System;
namespace xumh
{
public class MyClass
{
public MyClass()
{
Console.WriteLine("MyClass:默认构造函数,因为本类有带参构造,所以默认构造必须显式实现");
}
public MyClass(int a, int b)
{
Console.WriteLine("MyClass带参构造:a={0}, b={1}.", a, b);
}
}
public class MyClass2 : MyClass
{
public MyClass2()
{
Console.WriteLine("MyClass2:默认构造函数,必须显式实现基类的无参构造函数!");
}
public MyClass2(int a, int b)
{
Console.WriteLine("MyClass2带参构造:a={0}, b={1}.尽管MyClass3有带参构造,但只有显式调用带参构造,否则总是呼叫默认构造", a, b);
}
}
public class MyClass3 : MyClass2
{
public MyClass3()
{
Console.WriteLine("MyClass3:默认构造函数,因该类有带参构造,所以必须显式实现所有积累的默认构造");
}
public MyClass3(int a, int b)
{
Console.WriteLine("MyClass3带参构造:a={0}, b={1}.", a, b);
}
}
public class runMyApp
{
static void Main()
{
MyClass3 my3 = new MyClass3();
Console.WriteLine();
MyClass3 my = new MyClass3(3, 4);
Console.ReadKey();
}
}
}
/*--===------------------------------------------===---
输出如下:
MyClass:默认构造函数,因为本类有带参构造,所以默认构造必须显式实现
MyClass2:默认构造函数,必须显式实现基类的无参构造函数!
MyClass3:默认构造函数,因该类有带参构造,所以必须显式实现所有积累的默认构造
MyClass:默认构造函数,因为本类有带参构造,所以默认构造必须显式实现
MyClass2:默认构造函数,必须显式实现基类的无参构造函数!
MyClass3带参构造:a=3, b=4.
* --===------------------------------------------===---*/
- C#类的继承,构造函数实现及其调用顺序
- C#类的继承,构造函数实现及其调用顺序
- java继承的构造函数调用顺序
- C#类的继承中,构造函数的执行顺序
- C#继承与构造函数的调用
- C++构造函数的执行顺序及析构函数的执行顺序-多种情况:普通继承、虚拟继承、类构造函数调用其它类的构造函数
- C++虚继承(七) --- 虚继承对基类构造函数调用顺序的影响
- 多继承时的构造函数调用的顺序
- Java中继承关系的构造函数的调用顺序
- C#继承|继承中构造函数的调用
- C++继承关系中构造函数的调用顺序
- java关于继承中构造函数的调用顺序
- C++中多重继承构造函数调用的先后顺序
- c# 关于继承类中构造函数的实现
- C++类的继承中构造函数和析构函数调用顺序例子
- C++继承构造函数调用顺序问题
- C++多继承构造函数调用顺序
- C++继承中构造函数调用顺序
- hash算法 (hashmap 实现原理)
- .NET简谈——跨进高级编程门槛的必经之路
- 做到不被降权而又有高流量的目前最切合实际的办法
- CSS命名规范
- Java中的IO整理完整版
- C#类的继承,构造函数实现及其调用顺序
- javascript如何修改超连接图片
- VC中,CAboutDlg,CDrawApp,CDrawDoc,CDrawView和CMainFrame五个类的关系是怎样的?它们各有什么作用?
- javascript基础、DOM
- JAVA文件操作大全
- SQL Server 2005导出表中数据的SQL脚本形式(即INSERT语句)
- apn管理
- Log4j 详述
- Struts2中ActionContextCleanUp作用