C# sealed 方法

本文详细解释了C#中的sealed关键字如何用于中断继承链,以及如何在类和方法上使用它。同时,介绍了virtual和abstract关键字的区别,并通过实例展示了它们在实际编程中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sealed是用来中断继承链的。

sealed 能让一个类失去被继承的能力。

public class SubClass : BaseInterClass {
        public override void absfunction()
        {
            base.absfunction();
            Console.WriteLine("beside baseclass ovveride absfunction output, sub class override absfunction!!!");
        }
       
    }
    sealed class subsubClass : SubClass { }
    class subsubsubClass : SubClass { }

sealed用在方法上就是 到当前类为止,所有继承当前类的子类都无法再override这个方法了。
  1. virtual / abstract 类型的方法必须是public的。
  2. abstract类型的方法只能定义在abstract类中,virtual类型的方法无限制。
  3. 只有virtual / abstract 类型的方法才能被override.
  4. virtual 类型的方法可以有具体实现。
  5. abstract 类型的方法不可以有具体实现,只能有定义。


public abstract class AbstractClass{
        static void show() { Console.WriteLine("abstractor class show function !!!"); }
        public virtual void hello() { Console.WriteLine("abs class hello function !!!"); }
        public abstract void absfunction();
        public void normalfunction() { Console.WriteLine("abs class normal function!!!"); }
        
    }

    public class BaseInterClass : AbstractClass
    {
        public sealed override void hello() { Console.WriteLine("abs class sealed hello function,avoid be overitten!!!!"); }
        public override void absfunction()
        {
            Console.WriteLine("BaseInterClass override function!!!");
        }
        
    }

    public class SubClass : BaseInterClass {
        public override void absfunction()
        {
            base.absfunction();
            Console.WriteLine("beside baseclass ovveride absfunction output, sub class override absfunction!!!");
        }
    }

调用:
BaseInterClass b1 = new BaseInterClass();
            b1.normalfunction();
            b1.hello();
            SubClass b2 = new SubClass();
            b2.hello();
            b2.absfunction();

输出:
base class normal function!!!
abs class normal function!!!
abs class sealed hello function,avoid be overitten!!!!
abs class sealed hello function,avoid be overitten!!!!
BaseInterClass override function!!!
beside baseclass ovveride absfunction output, sub class override absfunction!!!








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值