C#--virtual,abstract,override,new,sealed
virtual:使用此关键字,可以使其在派生类中被重写.
abstract:抽象方法,由子类重写,或继续为抽象方法存在,并由其子子类实现.
override: 重写父类方法,属性,或事件的抽象实现或虚方法.
new:显式隐藏从父类继承的成员.
后台代码:
public abstract class Animal { public abstract void Eat(); public virtual void Sleep() { HttpContext.Current.Response.Write("动物正在睡觉!<hr/>"); } } public class Horse : Animal { public override void Eat() { HttpContext.Current.Response.Write("马在吃草!<br/>"); } public override void Sleep() { HttpContext.Current.Response.Write("马是站着睡觉!<hr/>"); } } public class Cat : Animal { public override void Eat() { HttpContext.Current.Response.Write("猫在吃食!<br/>"); } public new void Sleep() { HttpContext.Current.Response.Write("猫是趴着睡觉的!<hr/>"); } }
补充:
当sealed修饰方法时,sealed必须与override一起使用.
sealed将使您能够允许类从您的类继承,并防止它们重写特定的虚方法或虚属性
public class Cat : Animal { public sealed override void Eat() { HttpContext.Current.Response.Write("猫在吃食!<br/>"); } public new void Sleep() { HttpContext.Current.Response.Write("猫是趴着睡觉的!<hr/>"); } } public class LitCat : Cat { public new void Sleep() { HttpContext.Current.Response.Write("猫是趴着睡觉的!<hr/>"); } }此时,在LitCat类中,就不会出现override Eat方法了.