【第21期】观点:人工智能到底用 GPU?还是用 FPGA?

C#入门10.6——密封类与密封方法

原创 2016年08月29日 20:22:37

并不是所有的类都可以被继承,不能继承的类称为密封类,用关键字sealed。

适用场合:

如果要对库、类或自己编写的其他类进行操作,则重写某些功能会导致编译错误。

因为商业原因把类或方法标记为sealed,以防第三方以违反注册协议的方式扩展该类。

注意:

密封类中不能包含虚方法(Virtual)和抽象方法(abstract),因为在密封的类没有为派生类提供实现其虚方法和抽象方法的机会。

在把类或方法标记为sealed时要小心,因为这么做会严重限制它的使用。即使不希望它能继承一个类或重写类的某个成员,仍有可能在将来某个时刻,有人会遇到没有预料到的情形。

.NET基类库大量使用了密封类,使希望从这些类中派生出自己的类的第三方开发人员无法访问这些类,例如string就是一个密封类。

定义:用修饰符sealed进行标记的方法

作用:使用sealed修饰符可以防止派生类进一步重写该方法

注意:如果实例方法声明包含sealed修饰符,则它必须也包含override修饰符。

要在方法中使用sealed关键字,必须先在基类上将其声明为重写。如果基类上不希望有重写的方法或属性,就不要将其声明为virtual。

密封类除了不能被继承外,其他与非密封类一样,密封方法则必须通过重写基类中的虚方法来实现。

Talk is cheap,show you the code.

class Program
    {
        static void Main(string[] args)
        {
            Class2 myclass2 = new Class2();
            myclass2.Write();
            Console.ReadKey();
        }
    }
public/*基类的可访问性一定要高于子类的,平级也可以*/class Class1
    {
        public virtual void Write()
        {
            Console.WriteLine("未密封方法");
        }
    }
//如果一个类不希望将来在使用的过程中被继承,被派生,这时候可以采用关键字sealed
    //虚方法virtual 抽象方法abstract的存在就是为了继承,为了派生,因此不能被放在sealed类中
    public class Class2:Class1
    {
        public sealed override void Write()
        {
            Console.WriteLine("密封方法");
        }
    }
public class Class3:Class2
    {
       /* public override sealed void Write()
        {
            在Class2中该方法被密封,无法重写。
        }*/
    }




版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

C# 密封类和密封方法

在C#中,为了确保其他类不可以派生于某一类,可以使用sealed关键字密封该类,对某个类使用 sealed关键字作为前缀,这样可以防止其他类继承自该类,如public sealed class Squ...

C#——类 : 密封类 & 静态类

[背景介绍]Oh, My God我现在也没有参透有什么卵用的东西 内容较少就和 static 操到一起来写吧sealed密封类和abstract不一样,abstract要求使用的时候,必须从这个ab...

C#中的抽象类、密封类、静态类

1.抽象类  通过在类定义前面放置关键字 abstract,可以将类声明为抽象类,不能实例化。抽象类的用途是提供一个可供多个派生类共享的通用基类定义。抽象类也可以定义抽象方法。方法是将关键字 abs...

C#中的密封类(sealed)

很多初学者都不明白,C#中为什么会有密封类?        其实我们知道C#语言是一种面向对象的语言,而继承是面向对象的主要特征之一,继承就是在类之间建立一种相交关系,使子类可以继承父类的一些特性,...

sealed关键字——密封类

与抽象类相反,在实际编程过程中,有的类已经没有在被继承的必要了。针对这种情况,C#提出了一个密封类的概念。密封类的声明使用sealed关键字,可以防止非有意的派生。如果视图将一个密封类作为基类,C#将...

C#中的虚类、密封类、抽象类

虚方法: 1、virtual方法表示此方法可以被重写, 也就是说这个方法具有多态.父类中的方法是通用方法,可以在子类中重写以重新规定方法逻辑.  2、virtual方法可以直接使用,和普通方法一样...

抽象类、密封类及类成员(C#)

使用 abstract 关键字可以创建不完整且必须在派生类中实现的类和类成员。使用 sealed 关键字可以防止继承以前标记为 virtual 的类或某些类成员。

Kotlin编程之伴生对象,抽象类,密封类

Kotlin编程中: 1. 伴生对象; 2. 抽象类; 3. 密封类;

Kotlin最简单的入门教程——可见性修饰符,扩展,数据类,密封类

1 可见性修饰符在 Kotlin 中有这四个可见性修饰符:private、 protected、 internal 和 public。 如果没有显式指定修饰符的话,默认可见性是 public文件名和类...

C#密封类、密封方法

密封类:密封类的关键字是sealed,那么密封类的特点是:不能被继承密封方法:密封方法关键字仍然是sealed,密封方法的一些特点是:1,一般存在于派生类中2,可以存在一般类中3,先重写才能密封4,重...
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)