C#学习笔记-接口和抽象类

//一个类只能有一个静态构造函数,该构造函数不能有访问修饰符public private,也不能带任何参数。
//静态构造函数,不能直接调用,只能在下述情况下执行:
//1、创建包含静态构造函数的类实例时。
//2、访问包含静态构造函数的类的静态成员时。
//在这两种情况下,会首先调用静态构造函数。之后实例化类或访问静态成员。无论创建了多少个类实例,其静态构造函数都只调用一次,为了区分静态构造函数与本钱前面介绍的构造函数,
//也将所有非静态构造函数成为实例构造函数。
//静态类只能包含静态成员,不能包含实例构造函数。因为按照定义,他根本不能实例化。但静态类可以有一个静态构造函数。
//封装就是把数据和函数集合在类中,被封装的对象,我们通常称之为抽象数据类型。
//封装的意义在于防止我们无意中把代码或数据破坏。
//接口是把公共实力(非静态)方法和属性组合起来,以封装特定功能的一个集合。一单定义了接口就可以在类中实现它。这样,类就可以支持接口所指定的所有属性和成员。
//接口不能单独存在。不能像实例化一个类那样实例化接口。
//另外接口不能包含实现其成员的任代码,而智能定义成员本身。实现过程必须在实现接口的类中完成。
//类的可访问性修饰符关键字:internal public
//可以指定类是抽象的(不能实例化,只能继承,可以有抽象成员)abstract或者密封的sealed(不能被继承)两个关键字互斥。
//在c sharp的类定义中,只能有一个基类。如果继承了一个抽象类,就必须实现所继承的所有抽象成员(除非派生类也是抽象的。)
//所有类的根都是system.object
//必须使用逗号来分割基类名。和接口名。
//支持该接口的类必须实现所有接口成员(属性、方法),但如果不想使用给定的接口成员,可以提供一种空的实现方式(没有函数代码),还可以把接口成员实现为抽象类中的抽象成员。
//不能在接口中使用关键字abstract 和 sealed。因为这两个锈蚀负载接口定义中是没有意义的他们不包含实现代码,所以不能直接实例化,而且必须是可以继承的
//接口必须是可以继承的。
//可以使用多个基接口。
//接口不是类,所以没有继承syste。object但是为了方便起见,system。object的成员可以通过接口类型的变量来访问。
//不能用实例化类的方式来实例化接口。

抽象类可以有抽象成员和非抽象成员。接口成员是公共的,且接口成员必须在使用接口的类上实现--他们没有代码体。

抽象类的成员可以是私有的、受保护的、内部的或者受保护的内部成员。(其中受保护的内部成员只能在应用程序的代码或派生类中访问。)此外,接口不能包含字段、构造函数、析构函数、静态成员(静态成员不能被实现,而接口成员必须在使用接口的类上实现,冲突)或常量。

注意:抽象类主要用于对象系列的基类,这额对象共享某些主要特性,例如公共目的和结构。接口则主要用于类,这些类存在根本性的区别,但仍可以完成某些相同的任务。

结构是值类型,而类是引用类型。

 

posted on 2018-10-14 22:56  安安1  阅读(64)  评论(0)    收藏  举报

导航