- 浏览: 183152 次
- 性别:
- 来自: 深圳
文章分类
最新评论
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> 1 class Program
{
static void Main(string[] args)
{
B b = new B();
Console.WriteLine(A.s_a);
Console.WriteLine(B.s_b);
Console.WriteLine(b.g_a);
Console.WriteLine(b.g_a_1);
Console.WriteLine(b.g_b);
}
}
//基类
class A
{
//静态变量
public static string s_a = "A.s_a" + (C.index++).ToString("_00");
//变量
public string g_a = "A.g_a" + (C.index).ToString("_00");
//为了显示A.g_a
public string g_a_1 = "A.g_a_1" + (C.index++).ToString("_00");
//静态构造函数
static A()
{
Console.WriteLine("It is in static A()" + (C.index++).ToString("_00"));
}
//构造函数
public A()
{
Console.WriteLine("It is in A()" + (C.index++).ToString("_00"));
this.M();
}
//虚方法
public virtual void M()
{
Console.WriteLine("It is in A.M()" + (C.index++).ToString("_00"));
}
}
//派生类
class B : A
{
//静态变量
public static string s_b = "B.s_b" + (C.index++).ToString("_00");
//变量
public string g_b = "B.g_b" + (C.index++).ToString("_00");
//静态构造函数
static B()
{
Console.WriteLine("It is in static B()" + (C.index++).ToString("_00"));
}
//构造函数
public B()
: base()
{
Console.WriteLine("It is in B()" + (C.index++).ToString("_00"));
g_a += "->B.g_a" + (C.index++).ToString("_00");
this.M();
}
//重写方法
public override void M()
{
Console.WriteLine("It is in B.M()" + (C.index++).ToString("_00"));
Console.WriteLine("B.g_a=" + g_a + (C.index++).ToString("_00"));
}
}
class C
{
public static int index = 1;
}
代码中使用了另一个类的静态int型变量记录下各个部分的执行顺序。
运行结果是:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->It is in static B()_02
It is in static A()_05
It is in A()_07
It is in B.M()_08
B.g_a=A.g_a_06_09
It is in B()_10
It is in B.M()_12
B.g_a=A.g_a_06->B.g_a_11_13
A.s_a_04
B.s_b_01
A.g_a_06->B.g_a_11
A.g_a_1_06
B.g_b_03
整理下后得到:
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->B.s_b_01
It is in static B()_02
B.g_b_03
A.s_a_04
It is in static A()_05
A.g_a_1_06
It is in A()_07
It is in B.M()_08
B.g_a=A.g_a_06_09
It is in B()_10
A.g_a_06->B.g_a_11
It is in B.M()_12
B.g_a=A.g_a_06->B.g_a_11_13
结论:
当实例化一个子类时,父类以及子类的变量和构造函数的执行顺序如下:
01子类的静态变量->02子类的静态构造函数->03子类的变量->04父类的静态变量(此时因为要执行子类的构造函数,会与父类发生关系)
->05父类静态构造函数->06父类变量->07父类构造函数->10子类构造函数->结束
在试验过程里面添加了几个步骤主要说明子类重写父类方法的调用情况:
1)在父类的构造函数中调用(步骤08),此时调用子类的实现时,其中的变量g_a的值还是来自于父类(步骤09)。
2)在调用子类的构造函数后,变量g_a的值被重新设置(步骤11),此时调用子类的实现时,变量值是子类构造函数中设定的。
发表评论
文章已被作者锁定,不允许评论。
-
使用SignalR构建一个最基本的web聊天室
2015-01-06 15:09 725使用SignalR,可以使用服务器消息推送到客户端,件demo ... -
Cookie小知识
2014-12-17 11:02 558如果cookie设置了过期时间,cookie就会保存在硬盘中 ... -
远程服务器返回错误: (500) 内部服务器错误 (解决方案)
2013-12-19 18:00 13999“/”应用程序中的服务器错误。 远程服务器返回错误: ... -
C# 的异步get 的三种方法
2013-06-21 16:04 929using System;using System.Colle ... -
ado.net 连接池相关知识
2013-01-27 20:07 809using System;using System.Coll ... -
c# 验证码生成与使用
2012-10-07 14:37 869---生成验证码的类 using System;using ... -
多线程的理解
2012-09-21 00:31 676什么是多线程:多线程就是“同时”可以执行多个任务,实际上并不是 ... -
委托:委托、事件与Observer设计模式
2012-09-20 23:10 887上面的例子已不足以再进行下面的讲解了,我们来看一个新的范例,因 ... -
委托:将方法绑定到委托
2012-09-20 22:59 767将方法绑定到委托 看到这里,是不是有那么点如梦初醒的感觉?于 ... -
委托:将方法做为方法的参数
2012-09-20 22:51 699引言 委托 和 事件在 .Net Framework中的应用 ... -
C#,FTP上传的代码 FtpWebRequest
2012-08-24 22:46 925private void Upload(string file ... -
c#之冒泡法与快速法排序
2012-08-08 22:10 707设计页面labe1 ,label2 ,label5分 ... -
C#中数组类型的相互转换
2012-08-08 22:11 1420string数组类型转换为int数组.方法一:Con ... -
时间处理类
2012-03-01 11:10 693/// <summary> /// ... -
DropDownList 小知识
2011-12-03 10:24 814给DropDownList 绑定值后,如果要默认选中其中一个 ... -
列表最后一行加小计或总计 ——小总结
2011-11-30 16:56 17351.所有分页的总计 protec ... -
无法加载协定为“tt.WeatherWebServiceSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
2011-11-22 22:08 3753无法加载协定为“tt.WeatherWebServiceSoa ... -
一个天气预报的webservice
2011-11-21 20:45 990http://www.webxml.com.cn/WebSer ... -
asp.net 页面生成html页面 方法二
2011-11-15 22:53 942protected override void Render ... -
asp.net 页面生成html页面 方法一
2011-11-15 22:43 831这是个方法 private bool CreateList( ...
相关推荐
主要介绍了C++中基类和派生类之间的转换,有助于深入理解C++面向对象程序设计,需要的朋友可以参考下
构造出一类新的HERMITE插值基函数,
中基国威:2019年半年度报告.PDF
中医执业医师考试中基50题.pdf
世联_浙江中基置业青山湖项目整体定位及发展报告_228PPT.pptx
中基重点问题.pages
用户和密码都是 admin 公司企业网站自助建站管理系统正式版,是公司企业建网站之首选。经典漂亮的适合公司企业的版面。强大的网站后台管理系统,只要会打字,就可随时管理网站内容!就可轻松拥有一个属于自己的...
中基试题及答案.docx
中医执业医师考试中基50题.doc
1_中基作业--王迎澳.odt
中基张景明五行学说PPT学习教案.pptx
企业-ST中基-2020年年终总结.rar
2021年中医执业医师考试针灸中基高频考点.pdf
中基.碧域钢筋工程施工组织设计方案.doc
中基-中医基础理论知识试题(卷)!.doc
实验2-matlab中基2-DIT-FFT的实现.doc
胶东宫家早白垩世辉长-闪长岩中基性岩石包体成因,汤华云,任红伟,对胶东宫家辉长-闪长岩中基性岩石包体进行了岩相学、年代学、元素地球化学和Sr-Nd同位素研究。宫家基性岩石包体大致分为黑云母辉长