一:类的访问权限
1,内部类:默认情况下,类的声明是内部的,即只有当前项目中的代码才能访问它。也可以用internal访问修饰符关键字进行显示指定。
internal class Myclass { //class menmbers }
2,公共类:用public指定类是公共的,即可以在其他项目的代码中访问,但在其他项目中访问时别忘了用using把名称空间引入。
3,C#里类及类成员的修饰符有以下五个如下:
public :公开 类及类成员的修饰符 对访问成员没有级别限制
private : 类私有成员的修饰符 只能在类的内部访问,它的派生类也没有访问权限;
protected :类A中定义为protected类型的成员只有在类A中和在继承类A的派生类中才能进行访问
//这是错误的
public class Action { protected int i = 90; } class Tester { static void Main(string[] args) { Action a=new Action(); Console.WriteLine(a.i); Console.ReadKey(); } }
这是对的:
public class Action { protected int i = 90; public override void action() { Console.WriteLine(i); } }
public class Action2 : Action
{
public void action2()
{
Console.WriteLine(i);
}
}
class Tester { static void Main(string[] args) { Action a = new Action();
Action2 a2=new Action2();
a2.action2(); a.action(); Console.ReadKey(); } }
internal 类A中定义为internal类型的成员可以被类A所在程序集中的任何类的方法访问;
二:类的类型
1,抽象类(abstract)
抽象类:不能实例化,只能继承,可以有抽象成员,也可以有非抽象成员,(但是如果有抽象成员的类,该类一定要定义成抽象类)。
抽象类也有公共抽象类和内部抽象类之分;
注意:当抽象类的派生类没有用 override从写其方法时,此派生类也要定义成抽象类;不能用呢new来重新抽象类的方法,但可以用new来写虚拟的方法;
三:类的继承
1,用sealed关键字进行密封(不能被继承)
2,基类的权限要比派生类的宽松才能被派生类继承,如:内部类可以继承公共基类,但是基类不能内部类
//下面程序是不合法,不能编译的
internal class ClassBase { //class members } public class MyClass : ClassBase { //class members }
四:类的方法定义
1,五个关键字
virtual——方法可以重写(也叫虚拟方法)
abstract——方法必须在非抽象类的派生类中重写(中能用与抽象类中)
override——方法重写了一个基类方法()
extern——方法定义放在其他地方
sealed——指定这个方法不能由派生类重写()