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

  • 相关阅读:
    fail-fast以及Iterator对象
    LeetCode~1351.统计有序矩阵中的负数
    LeetCode~75.颜色分类
    LeetCode~5364. 按既定顺序创建目标数组
    LeetCode~945.使数组唯一的最小增量
    LeetCode~409. 最长回文串
    笔记: SpringBoot + VUE实现数据字典展示功能
    JSON parse error: Cannot deserialize value of type `java.util.Date` from String
    为什么要用location的hash来传递参数?
    初识Git
  • 原文地址:https://www.cnblogs.com/loveYN/p/4509700.html
Copyright © 2020-2023  润新知