override是对积累方法的重写,需要重写的方法在该类的基类中需要用virtual或abstract来修饰,当然用virtual来修饰的方法有自己的实现,而用abstract来修饰的方法不允许有实现,只允许继承该类的子类重新写该方法且子类必须有实现的方法。
我们来看一个例子来表述两个字段的不同
abstract class AnmialClass
{
private int foot;
public int Foot
{
get { return foot; }
set { foot = value; }
}
public abstract void Mess();
public virtual void Mess1()
{
MessageBox.Show("我是Mess1");
}
public void mess2()
{
MessageBox.Show("我是Mess2");
}
}
这是父类的相关定义
class PeopleClass:AnmialClass
{
public override void Mess()
{
MessageBox.Show(“我是子类的Mess”);
}
public override void Mess1()
{
MessageBox.Show("我是子类的Mess1");
}
public new void Mess2()
{
MessageBox.Show("我是子类的Mess2");
}
}
该类时继承AnmialClass类的子类
PeopleClass pe = new PeopleClass();
pe.mess();
pe.mess1();
pe.mess2();
AnmialClass p = pe as AnmialClass;
p.mess1();
p.mess2();
我们将会发现输出的结果是:
”我是子类的Mess“
”我是子类的Mess1“
”我是子类的Mess2“
”我是子类的Mess1“
“我是Mess2”
new修饰符只是将方法隐藏,当父类被实例化时,通过父类调用的方法依然是父类的方法,而overide是把父类方法重写。
浙公网安备 33010602011771号