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/>");
}
}
前台调用 | 效果 |
protected void Page_Load(object sender, EventArgs e) |
补充:
当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方法了.