您的位置:首页 > 编程语言 > C#

c#中利用new和override来控制virtual方法的版本

2012-05-28 22:03 513 查看
在继承类中,可以通过override和new来重写隐藏基类声明为virtual的方法

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace 版本控制
{
class Program
{
static void Main(string[] args)
{
myderived md = new myderived();
md.met1();
md.met2();
md.met3();
Console.WriteLine();
mybase mb = (mybase)md;
mb.met1();
mb.met2();
mb.met3();
}
}

class mybase//基类声明
{
public virtual void met1()//基类的方法要以virtual声明,负责不能被继承类重写隐藏
{
Console.WriteLine("基类met1");
}
public virtual void met2()
{
Console.WriteLine("基类met2");
}
public virtual void met3()
{
Console.WriteLine("基类met3");
}
}
class myderived : mybase
{
public override void met1()//以override重写的方法
{
Console.WriteLine("继承类met1");
}
public new void met2()//以new来显示隐藏的方法
{
Console.WriteLine("继承类met2");
}
public void met3()//不加修饰符,以重名方法隐式隐藏的方法
{
Console.WriteLine("继承类met3");
}
}
}


可以看到当利用override重写后,即使将继承类转换为基类,调用的还是继承类的方法

利用new或隐式声明,则安照各自类的方法来调用

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: