C#sealed关键字

含义

sealed—>密封的,封闭的。顾名思义就是由sealed修饰的类或方法将不能被继承或是重写。

定义类为sealed—>密封类

密封类:当对一个类应用 sealed修饰符时,此修饰符会阻止其他类从该类继承(不能派生子类)。

代码1:

        static void Main(string[] args)
        {
            B b = new B();//声明子类对象b
            Console.ReadKey();
        }
        sealed class A//基类被sealed修饰
        {
        }
        class B:A//类B继承父类
        {
        }

结果显而易见:
在这里插入图片描述
代码2:
在这里插入图片描述

定义方法为sealed—>密封方法

密封方法 :当对方法或者属性应用sealed修饰符时,能够允许派生类从基类继承,并防止它们重写特定的虚方法或虚属性。(★此时同override一起使用)


【在提到密封方法时,我们先了解下对基类方法的重写:】
重写 VS 重载

重写:派生类继承基类的方法
(特点:基类中方法virtual;派生类中方法override)。
重载:在一个类中用相同的名称但是不同的参数类型创建一个以上的过程、实例构造函数或属性。

代码1:

        static void Main(string[] args)
        {
            Dog dog = new Dog();//声明Dog对象
            dog.Shout();
            Cat cat=new Cat();//声明Cat对象
            cat.Shout();
            Console.ReadKey();
        }
        class Animale//定义动物父类
        {
            public virtual void Shout()//父类中有一个Shout方法
            //★virtual
            {
                Console.WriteLine("动物具有叫声!");
            }
        }
        class Dog:Animale//狗类继承父类
        {
            public override void Shout()//对父类中Shout进行重写,Dog类输出Dog所具有的Shout方法
            //★override
            {
                Console.WriteLine("旺旺.....");
            }
        }
        class Cat : Animale//对父类中Shout进行重写,Cat类输出Cat所具有的Shout方法
        {
            public override void Shout()
            {
                Console.WriteLine("喵喵.....");
            }
        }
        //Output:
        //旺旺.....
        //喵喵.....

言归正传:
代码1:

        static void Main(string[] args)
        {
            B b = new B();
            b.Print();
            Console.ReadKey();
        }
        class A//声明父类
        {
            public virtual void Print()//Print方法
                //★virtual虚基类
            {
                Console.WriteLine("输出:A");
            }
        }
        class B:A//声明B类对A类进行继承
        {
            public sealed override void Print()//sealed对B类中Print方法进行密封,子类无法对其重写
                //★override重写父类Print方法
            {
                Console.WriteLine("输出:B");
            }
        }
        //↓为了避免该项目影响当前工程,如需测试,删除注释↓
        class C : B//声明C类对B类进行继承
        {
            //public  override void Print()//重写父类中Print方法
                //★B类中Print方法被密封,其实是无法继承的
            //{
            //    Console.WriteLine("输出:C");
            //}
        }

在这里插入图片描述

干就完了,没毛病!
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AuCl.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值