类和结构是.NET Framework 通用类型系统的两种基本构造。每种本质上都是一种数据结构。其中封装了同属一个逻辑单元的一组数据和行为。 数据和行为是类或结构的成员。
类是引用类型,结构是值类型。
类用于对更复杂的行为或应在类对象创建后进行修改的数据建模。 结构最适用于所含大部分数据不得在结构创建后进行修改的小型数据结构。
封装或称为面向对象的编程的第一支柱或原则,类或结构可以指定自己的每个成员对外部代码的可访问性,隐藏不得在类或程序集外部使用的方法和变量。
公用 public
同一程序集(assembly)中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。
专用 private
只有同一类或结构中的代码可以访问该类型或成员。
受保护 protected
只有同一类或结构或者从该类派生的类中的代码可以访问该类型或成员。
内部 internal
同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
Protected internal
该类型或成员可由对其进行声明的程序集或另一程序集中的派生类中的任何代码访问
在命名空间内直接声明(不嵌套在其他类或结构中)的类和结构可以为公共或内部。即不得是私有,受保护的,受保护的内部, 如果未指定任何访问修饰符,则默认设置为内部。
结构成员(包括嵌套的类和结构)可以声明为公共、内部或私有。 类成员(包括嵌套的类和结构)可以为公共、受保护的内部、受保护、内部或私有。 默认情况下,类成员和结构成员(包括嵌套的类和结构)的访问级别为私有。
可以使用任何五种访问类型声明类成员(包括嵌套的类和结构)。 结构成员无法声明为受保护,包括受保护的内部,因为结构不支持继承。
静态类无法实例化,使用类名本身访问静态类的成员
只包含静态成员
会进行密封
不能包含实例构造函数
静态类会进行密封,因此不能继承
继承
类(而非结构)支持继承。 派生自基类的类自动包含基类的所有公共、受保护和内部成员(其构造函数和终结器除外)。
通过继承,可以创建重用、扩展和修改在其他类中定义的行为的新类
抽象类
抽象类不能实例化。用途是提供一个可供多个派生类共享的通用基类定义,
抽象方法没有实现,派生类必须实现所有抽象方法,当抽象类从基类继承虚方法时,抽象类可以使用抽象方法重写该虚方法。
抽象类不必包含抽象成员,但是,如果类包含抽象成员,则类本身必须声明为抽象。
密封类
类定义前面放置关键字 sealed,可以将类声明为密封类。
密封类不能用作基类。 因此不能是抽象类。
在对基类的虚成员进行重写的派生类上,方法、索引器、属性或事件可以将该成员声明为密封成员。 在用于以后的派生类时,这将取消成员的虚效果。 方法是在类成员声明中将sealed
关键字置于 override 关键字的前面。