zoukankan      html  css  js  c++  java
  • 密闭类、密闭方法

    sealed public void Func()密闭方法

    sealed public class C{}  密闭类

    密闭的作用: 实现类不可以通过继承来修改,不可以派生子类;实现 方法不可以再被override。

    要实现 基类的方法不被重写,就不要用virtual声明该方法。要实现派生类中用override声明的方法不被重写,则需要前加sealed声明。

     abstract public class Pet//当包含抽象方法时,必须用abstract声明
        {
            protected string Name;//protected 保护级别,派生类可访问
            public Pet(string name)//基类的构造函数
            {
                Name = name;
            }
            public void PrintName()
            {
                Console.WriteLine("Print" + Name);
            }
    
            //virtual public void Speak()   //虚方法//如果该方法够抽象,抽象到其实体是没有机会被用到并且都在该类的派生类中有各种不同实现的情况下,就可以改成抽象方法
            //{
            //    Console.WriteLine("I'm "+Name);  
            //}
            abstract public void Speak();//抽象方法,其所在类也得换为abstract声明。在其派生类中必须通过override做具体实现
        }
        public class Dog : Pet
        {
            public Dog(string name) : base(name)//构造函数//用关键字base调用了基类的构造函数
            {
    
            }
            new public void PrintName()
            {
                Console.WriteLine("子打印" + base.Name);
            }
            //override public void Speak()//重写基类Pet的虚方法
            sealed override public void Speak()//声明为密闭方法加了sealed-------------看这里看这里
            {
                Console.WriteLine("子说" + Name);
            }
        }
        public class Corky:Dog
        {
            public Corky(string name) : base(name)//构造函数//此处base指的是Dog类
            {
            }
            override public void Speak()//这里报错//错误    CS0239    “Corky.Speak()”: 继承成员“Dog.Speak()”是密封的,无法进行重写-----看这里看这里        
    
            { }
         }
  • 相关阅读:
    (40)C#windows服务控制
    (6)C#事务处理
    (1)sqlite基础
    bzoj 2456 mode
    bzoj 2763 [JLOI2011]飞行路线
    bzoj1010[HNOI2008] 玩具装箱toy
    bzoj1034 [ZJOI2008]泡泡堂BNB
    [bzoj1059] [ZJOI2007] 矩阵游戏 (二分图匹配)
    [bzoj1066] [SCOI2007] 蜥蜴
    bzoj1072 [SCOI2007]排列perm
  • 原文地址:https://www.cnblogs.com/cicily/p/10916543.html
Copyright © 2011-2022 走看看