public string Meth3() 需要override 修饰!
解决方案 »
- socket 怪异问题
- 问下TcpClient的问题 怎么不断开连接持续的接收数据?
- decimal数据类型显示问题!(winform)
- 这个问题难道真的就没人能解决了吗?高分求救!!!
- Developer Express Inc.NET 控件的问题 SqlDataAdapter.update() 不好用
- 我要分页显示产品信息,产品信息包括左边一张较大的图片,右边是名称,型号,价格,右边的信息是垂直显示。我要用什么控件?
- dropdownlist如何同时被绑定两个数据源?
- 请问各位师兄,在C#.net里面如何开发C/S程序啊?哪里有相关的资料啊?谢谢!!
- 数据库连接小问题
- 接口 SQLDMO.NameList 的 QueryInterface 失败是什么意思?
- DataGrid列标题与列数据对齐方式
- 用过掌上电脑的请进入
在你添加037行后就把基类的同名函数给暴露的!
new只是隐藏,override才是重载!
037: MyBase mB = (MyBase) mD;
038:
039: System.Console.WriteLine(mB.Meth1());
040: System.Console.WriteLine(mB.Meth2());
041: System.Console.WriteLine(mB.Meth3());
042: }
043: }输出:MyDerived-Meth1
MyBase-Meth2
MyBase-Meth3如果你把第037行去掉,把039-041中的mB全部改为mD,输出又变为:MyDerived-Meth1
MyDerived-Meth2
MyDerived-Meth3037行如何理解?
039,040,041输出的结果如何解释??
MyDerived 中Meth2是覆盖MyBase 中的Meth2
MyDerived 中Meth3是错误的写法。
MyDerived mD = new MyDerived(); //MyDerived 的实例
037: MyBase mB = (MyBase) mD; 如何理解?
mD已经转变为它的父类
mB引用了mD(当然已经转型了的)
mD重写了父类MyBase的Meth1
其他的只是覆盖 隐藏(new 关键字)mB是MyBase类型
040: System.Console.WriteLine(mB.Meth2());
041: System.Console.WriteLine(mB.Meth3());
调用的是MyBase类型的方法039: System.Console.WriteLine(mB.Meth1());
调用的是MyDerived中的方法Meth1()
因为mB是从mD显式转换过来的 mD里重写了Meth1(),
除非用Base.Meth1(),才会调用MyBase里的Meth1()。
是对mD的引用.mB并没有分配内存.
用下面的方法可以验证:MyDerived mD2 = mB as MyDerived;
Debug.Assert(mD2 != null);如果.mB重新分配了内存,构造了myBase对象,那么这里将出现断言错误...