- 浏览: 189162 次
- 性别:
- 来自: 深圳
文章分类
最新评论
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 765使用SignalR,可以使用服务器消息推送到客户端,件demo ... -
Cookie小知识
2014-12-17 11:02 598如果cookie设置了过期时间,cookie就会保存在硬盘中 ... -
远程服务器返回错误: (500) 内部服务器错误 (解决方案)
2013-12-19 18:00 14176“/”应用程序中的服务器错误。 远程服务器返回错误: ... -
C# 的异步get 的三种方法
2013-06-21 16:04 964using System;using System.Colle ... -
ado.net 连接池相关知识
2013-01-27 20:07 839using System;using System.Coll ... -
c# 验证码生成与使用
2012-10-07 14:37 908---生成验证码的类 using System;using ... -
多线程的理解
2012-09-21 00:31 719什么是多线程:多线程就是“同时”可以执行多个任务,实际上并不是 ... -
委托:委托、事件与Observer设计模式
2012-09-20 23:10 946上面的例子已不足以再进行下面的讲解了,我们来看一个新的范例,因 ... -
委托:将方法绑定到委托
2012-09-20 22:59 801将方法绑定到委托 看到这里,是不是有那么点如梦初醒的感觉?于 ... -
委托:将方法做为方法的参数
2012-09-20 22:51 731引言 委托 和 事件在 .Net Framework中的应用 ... -
C#,FTP上传的代码 FtpWebRequest
2012-08-24 22:46 961private void Upload(string file ... -
c#之冒泡法与快速法排序
2012-08-08 22:10 741设计页面labe1 ,label2 ,label5分 ... -
C#中数组类型的相互转换
2012-08-08 22:11 1541string数组类型转换为int数组.方法一:Con ... -
时间处理类
2012-03-01 11:10 725/// <summary> /// ... -
DropDownList 小知识
2011-12-03 10:24 853给DropDownList 绑定值后,如果要默认选中其中一个 ... -
列表最后一行加小计或总计 ——小总结
2011-11-30 16:56 17681.所有分页的总计 protec ... -
无法加载协定为“tt.WeatherWebServiceSoap”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
2011-11-22 22:08 3824无法加载协定为“tt.WeatherWebServiceSoa ... -
一个天气预报的webservice
2011-11-21 20:45 1046http://www.webxml.com.cn/WebSer ... -
asp.net 页面生成html页面 方法二
2011-11-15 22:53 979protected override void Render ... -
asp.net 页面生成html页面 方法一
2011-11-15 22:43 864这是个方法 private bool CreateList( ...
相关推荐
通过这个案例,我们将了解C#中基类和派生类的关系,以及如何使用Base方法调用基类的构造函数。 首先,我们需要了解什么是基类和派生类。在面向对象编程中,基类是指一个通用的类,而派生类是指从基类继承的类。基类...
总结起来,C++中基类和派生类之间的转换是面向对象编程的关键特性,它允许我们利用继承的层次结构来设计更灵活的代码。理解这些转换规则以及何时使用虚函数和类型转换运算符是编写高质量C++代码的基础。在实际编程中...
15. 构造函数的调用顺序是先基类构造函数,然后是派生类构造函数。如果派生类构造函数没有显式调用基类构造函数,编译器将尝试调用基类的默认构造函数。 16. 抽象类是不能实例化的类,它可能包含抽象方法(没有定义...
构造出一类新的HERMITE插值基函数,
报告中的财务数据和指标摘要、管理层的讨论与分析以及财务报告部分,提供了深入洞察公司的经营业绩、财务健康状况和战略方向。然而,由于提供的内容有限,具体的数据和分析未能在此详细展开。完整报告将包含更详尽的...
报告概述了浙江中基置业青山湖项目的整体定位和发展策略,主要关注其作为高端豪宅的建设。报告强调了几个关键优势,这些优势构成了项目的核心价值体系。 1. **稀缺资源**:项目占据青山湖畔,拥有丰富的山水资源和...
【标题】:“企业-ST中基-2020年年终总结.rar”是一个压缩文件,通常包含了一家名为“ST中基”的企业在2020年度的工作总结报告。这样的文件是企业内部管理和信息共享的重要载体,它反映了公司在过去一年的运营状况、...
中基重点问题.pages
用户和密码都是 admin 公司企业网站自助建站管理系统正式版,是公司企业建网站之首选。经典漂亮的适合公司企业的版面。强大的网站后台管理系统,只要会打字,就可随时管理网站内容!就可轻松拥有一个属于自己的...
综上所述,中医执业医师考试中涉及的知识点包括:阴阳五行理论、整体观念、辨证论治、脏腑阴阳属性、疾病的发展转化以及精神心理与脏腑的关系。理解并掌握这些基本概念,对于中医临床实践和理论研究至关重要。
《2021年中医执业医师考试针灸中基高频考点》主要涵盖了中医执业医师资格考试中的重要知识点,尤其在针灸和中医基础理论方面。以下是这些知识点的详细解析: 1. 十二经脉交接部位:脾经与心经在心中交接,肝经与肺...
根据提供的文档内容,我们可以从中提炼出以下几个重要的知识点: ...综上所述,中基试题涵盖了中医学的基本概念、理论体系、治疗原则等多个方面,通过对这些知识点的掌握,可以更好地理解和应用中医学知识。
中医执业医师考试中基50题.doc
1_中基作业--王迎澳.odt
在本文中,徐应祥探讨了在B-样条函数插值与紧支撑样条小波函数插值过程中基函数的选择问题,指出这一步骤对于插值函数的成功构建至关重要。文章首先介绍了B-样条函数以及它们作为基函数所具备的优点,例如系数矩阵的...
4. 火山岩分类方案中涉及的具体岩类:分类方案中明确了各类火山岩的特点,如珍珠岩、黑耀岩和松脂岩等玻璃质熔岩多为酸性,而中基性种类也常见。同时,隐爆角砾岩和具熔结结构的岩石属于火山碎屑熔岩类。 5. 火山岩...
3. **位反序**:在基2 FFT中,由于分解和组合的过程涉及到不同的频率顺序,因此在计算过程中需要对输入序列进行位反序,使得低频成分在前,高频成分在后,以便正确地执行蝶形运算。 4. **递归结构与分治策略**:基2...
中基.碧域钢筋工程施工组织设计方案.doc