一、类
1.1类的声明
关键字class
1.默认情况,类声明是内部的(internal);
2.可以指定类是公共的,使用关键字public;
3.还可以指定类是抽象的(不能实例化,只能继承),不能用 sealed(密封) 修饰符修饰抽象类,因为这两个修饰符的含义是相反的。(采用 sealed 修饰符的类无法继承);
4.类定义中只能有一个基类;
5.如果继承了抽象类,必须实现继承的所有抽象成员(除非派生类也是抽象)
6.派生类的可访问性不能高于基类,也就是说,内部类可以继承于公共基类,公共基类不可以继承于内部类;
以下是合法的:
public class MyBase
{}
internal class MyClass:MyBase
{}
以下是不能编译的:
internal class MyBase
{}
public class MyClass:MyBase
{}
7.注意,这种紧跟冒号的方式也可以指定接口;但如果已经继承了基类,则需要跟在基类后面,并用逗号分隔写接口;
例如给指定了基类的MyClass添加一个接口:
public class MyClass:MyBase,IMyInterface
{
}
多个接口也可以:
public class MyClass:MyBase,IMyInterface,IMySecondInterface
{
}
!注意支持该接口的类必须实现所有接口成员,如果不想使用给定的接口成员,可以用空的方式(没有函数代码),还可以把接口成员实现为抽象类中的抽象成员。
7.其他
(1)静态类:static关键词
public static class File
1. 静态类不能实例化,不能使用 new 关键字创建静态类类型的变量;
2.不能被继承,也不能被实例化。
3.、
类中的属性和方法也必须都是静态的。
(2)密封类:sealed关键词
不能用作基类,不能被派生
1.1类成员
1.2类成员
- public——成员可以由任何代码访问
- private——成员只能由类中的代码访问(如果没有使用关键字,就默认private)
- internal——成员只能由定义它的程序集(项目)内部的代码访问
- protected——成员只能由类或派生类中的代码访问
也可以使用static声明,表示是类的静态成员,而不是对象实例的成员。
class MyClass
{
public static int MyInt
}
静态字段必须通过定义它们的类来访问,比如上面的示例,是MyClass.MyInt,而不是这个类实例对象来访问。
1.2定义方法
注意如果方法使用了 static关键字,只能通过类来访问,不能通过对象实例访问。
- virtual——方法可以重写(子类重写,需要使用关键字override)
- abstract——方法必须在非抽象的派生类中重写(只用于抽象类中)
- internal——方法重写了一个基类方法
- extern——方法定义放在其他地方