zoukankan      html  css  js  c++  java
  • 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/>");
        }
    }
    前台调用 效果
        protected void Page_Load(object sender, EventArgs e)
        {
            Animal an1 = new Horse();
            an1.Eat();
            an1.Sleep();
    
            Animal an2 = new Cat();
            an2.Eat();
            an2.Sleep();
    
            Horse an3 = new Horse();
            an3.Eat();
            an3.Sleep();
    
            Cat an4 = new Cat();
            an4.Eat();
            an4.Sleep();
        }
    image

    补充:

    当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方法了.

  • 相关阅读:
    js试题
    JavaScript 实现removeElement函数
    关于优化
    变量申明的提升,闭包,作用域,this,运算符优先级详细举例及讲解
    前端架构:MVC以及MVVM MVP介绍
    JavaScript事件委托
    各种浏览器的Hack写法(chrome firefox ie等)
    vue页面跳转不刷新时created只执行一次
    iview-admin添加的路由为英文
    vue中使用moment时间戳
  • 原文地址:https://www.cnblogs.com/loveYN/p/4509700.html
Copyright © 2011-2022 走看看