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可以修饰变量(通常修饰引用类型)