C#附加修饰符

static:

类成员:

类成员由static关键字修饰

特点:

可以在未创建类的对象前就用类名直接调用类成员

类变量:

由static关键字修饰的字段

特点:

隶属于类模板(共用)

直接使用类名.访问

注意:无法使用对象引用.

类方法:

由static关键字修饰的方法

特点:

隶属于类模板

直接使用类名.访问

注意:

无法使用对象引用.

方法中不能使用this、base

静态构造函数:

static 类名(){}

用处:初始化static变量

特点:

每个类中都有此方法

不可被直接调用

使用类时自动执行

运行期间只执行一次

静态类:

由static修饰的类

特点:

不能实例化(没有对象)

共享

使用类名.访问内容

原则:

静态类中的所有成员必须是静态的

示例:

public static class StaticTestClass

{

   public static int n = 0;

   public static void Add()

   {

       n++;

   }

}

类内部调用关系

一.多类的加载次序

1.优先加载Main所在的类

2.执行Main方法

3.执行过程中使用到哪个类 加载哪个类

二.单个类的加载次序

1.加载类中的静态变量 静态方法

2.执行静态构造为静态变量进行初期化

3.当产生对象new对象时 分配成员变量和成员方法到对象中

注意:

非静态的可以调用静态和非静态

静态的只能调用静态的

abstract:

抽象类:

抽象的意义:

描述抽象的概念,规定必须实现的方法的统一接口

用abstract关键字来修饰的类

abstract class AbstractClass

{

}

特点:

必须被继承才可使用

不能被直接实例化

和密封类(sealed类)正好相反

抽象方法:

用abstract来修饰的方法

abstract returnType AbstractMethod ( [paramlist] );

特点:

必须被重写(override)

只有方法头,没有方法体

抽象方法必须在抽象类中

规定:

1.抽象类中不一定包含抽象方法

2.有抽象方法的类必定是抽象类

3.抽象方法只是声明,没有方法的实现

4.构造方法、类方法不能声明为抽象方法

5.子类必须实现抽象方法,除非子类也是抽象类

6.抽象类中不一定全是抽象方法 可以有一部分具体实现

sealed:

被sealed修饰的类被称为密封类

sealed class SealedClass

{

}

特性:密封类不能被继承

被sealed修饰的方法被称为密封方法

sealed override returnType SealedMethod([paramList])

{

}

特性:

密封方法会重写基类中的方法

密封方法无法被重写

注意:必须始终与override一起使用

被sealed修饰的属性被称为密封属性

sealed override returnType Property

{

set    

{

}

get

{

}

}

特性:

密封属性会覆盖基类中的属性

密封属性无法被覆盖

注意:必须始终与override一起使用

const&readonly:

const :

定义的是静态常量

声明的同时赋值

运行期间不能改变它的值

属于编译时常量

不能用new初始化

const一般修饰值类型和String

Readonly :

是只读变量

属于运行时变量

可以在类constructor里改变它的值

不能作用于局部变量

初始化时机:

1.声明的同时赋值

2.静态变量的话 在静态构造中初始化

3.非静态变量的话 在非静态构造中初始化

小结:

主要是几个重要关键字的使用:

static、abstract、sealed、const、readonly

学习的时候要从这几个关键字可以修饰的内容分类学习

static可以修饰类、方法、变量

abstract可以修饰类、方法

sealed可以修饰类、方法

const可以修饰变量(通常修饰值类型+String)

readonly可以修饰变量(通常修饰引用类型)

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容