修饰符:public,private,protected,interface;可选修饰符:static,abstract,sealed,virtual,override。
静态类(static)
静态类的特点:
1.静态类使用static定义
2.静态类 只能有静态成员,不能在静态类中生命实例成员。
3.静态类不能实例化
4.静态方法用static
5.静态类中不能构造函数
6.静态类天生就是密封的,不能扩展(不能被继承)
关于静态类是不是密封类:
不是:静态类使用关键词staiic定义,密封类使用sealed关键词定义,二者定义的方法不一样,说以不是
是:C#中的静态类是密封的,不能被继承,而C#中的密封类也是密封的,不能被继承。说明静态类天使就是密封的,可以把静态类理解成一种特殊的密封类。
密封类(sealed)
密封类的特点:
1.可以定义静态和实例成员,不可以定义需成员和抽象成员。
2.不能扩展(不能被继承)
3.可以实例化,但实例化变量只能访问类的实例成员。静态成员需要经过类本身来访问。
4.使用关键子sealed来定义
5.可以构造函数
抽象类(abstract)
抽象类的特点:
1.抽象类使用abstract关键字来定义
2.抽象类中可以有抽象成员,实例成员,虚成员,但是由于抽象类不能实例化,所以不建议在抽象类定义实例成员和虚成员
4.不能构造函数
5.抽象类能被继承,并且必须别继承,否则定义的没有意义。
6.抽象方法不能有函数体: public abstract void Method ();
数组
1.数组分为:一维数组,多维数组,交错数组
2.一维数组定义格式:type[ ] arrayName。
数组的定义和初始化方法:
(1)定义一个数组并初始化:int[ ] ints = new int[ ] {10,12,13,14};
[ ]表示范围;[ ]前的表示数据类型,数组项的数据类型({ }里面包含的数据);
(2)先定义,在初始化
string[] strings;
strings = new string[3] { “hello*,“abc”,“world” }:
[ ]中的3指数组长度,设置的数组长度,是不越界的,也不能少。
(3)先定义,再初始化,再通过索引给数组赋值
float[ ] floats;
floats = new float[3] ;
floats[o] = 10.1F;
floats[1] = 11.1F;
floats[2] = 12.2F;
3.类的数组:
把一个自定义的类存入数组:类名[ ] arrayName = new 类名[ ],
例 :Student[] students = new Student[3]
{new Student (oi Id=1 , Name=张三”},
new Student (o{ Id2,Name=”李四”},
new studento{ Id=3, Name=“王五”)} (Id和Name是自己的再类里面定义的属性)
4.可以通过索引来获取数组中的项的值。但索引不可以超过数组的最大长度。(数组里的Lenhght属性可以获得数组的长度)
5.可以通过循环函数(for,while,foreach)来访问数组里的值。
6.二位数组的定义:type[ , ] arrayName。逗号前表示行,逗号后表示列
string[,] strings2 = new string[3,3]; 定义一个三行三列的字符串数组。
通过两层for循环来获取数组里的值。
7.对象object[ ]数组里的项类型可以不一样,其他的数组项类型必须和定义的类型保持一致