override与new(用两个小例子来解释)
来源:互联网 发布:淘宝网怎么找厂家店 编辑:程序博客网 时间:2024/05/21 09:28
例一:
class Program
{
static void Main(string[] args)
{
B5 b5 = new B5();
b5.MethodB();
}
}
public class A5
{
public virtual void MethodA()
{
Console.WriteLine("A5.MethodA");
Console.Read();
}
public virtual void MethodB()
{
Console.WriteLine(this.GetType().ToString());
MethodA(); //父类引用指向子类对象
}
}
public class B5 : A5
{
public new void MethodA()//将这里的new改为override将又是另一种情况
{
Console.WriteLine("B5.MethodA");
Console.ReadLine();
}
}
例二:
class A
{
public A()
{
AA();
}
public virtual void AA()
{
Console.WriteLine("This is AA");
}
}
class B : A
{
int x = 1;
int y;
public B()
{
y = -1;
AA();
}
public override void AA() //将这里的override修改为new结果将是另一种情况
{
Console.WriteLine("x={0},y={1}", x, y);
}
}
class programs
{
static void Main(string[] args)
{
B b = new B();
Console.ReadKey();
}
}
//注释:以上两个例子表明,当存在“父类引用指向子类对象”的情况时,不能明确明白执行的是子类方法,还是父类方法时,可以如下理解
//当父类方法为virtual A(),子类方法为override A()时,此时将执行子类方法,因为此时父类的方法被子类重写了;当子类方法被改为new A()时,此时将执行父类的方法
//(注意:这里指的是当存在父类的引用指向子类对象的情况,如果本身就是子类对象执行方法的话,站在子类的角度看,new A() 是为了显式隐藏基类中的方法)
- override与new(用两个小例子来解释)
- 用两个小例子来解释单例模式中的“双重锁定”
- 两个例子均用现实的例子来解释委托事件的处理过程
- new与override
- override与new关键字
- new与override
- new与override区别
- override 与new 的区别
- New与Override的区别
- override与new的区别
- new与override的区别
- C#的new与override
- 重写关键字override与new
- ColorAnimation两个小例子
- C# override与new关键字对比
- C# override、new、abstract 与virtual详解
- override与new 以及模板方法模式
- sealed、new、virtual、abstract与override 总结
- UI优化
- 开发<c:if><c:else>标签解析及其源代码
- 10.5例题:动态规划典型题--最长公共子序列
- VC/MFC之ListCtrl控件使用经验总结(一)
- rand和srand的用法
- override与new(用两个小例子来解释)
- WIN32 编程:如何获取资源并写入硬盘
- extjs 关于js的动态加载问题
- C# vs2010 .net framework 4 工程转 vs2005工程 .net framework2 (一)
- 团购网有可能全军覆灭 电了商务揠苗助长
- JAVA LinkList插入排序
- 一个LED电子工程师的经验之谈
- 推荐一个在线制作icon的网站
- C++Builder中使用Pas文件