不仅有public和private
你已经了解了private关键字的重要性,知道怎么使用它,知道了它和public的区别。C#把它们叫做访问修饰符。这样命名是很有道理的,因为你一旦改变了一个类的属性、字段、方法的访问修饰符,也就改变了别的类访问它们的方式。还有一些别的访问修饰符,我们从你已经知道的开始讲:
★public意味着大家都可以访问它
把一个类的成员声明为public也就意味着别的类的任何成员都可以访问它。Public的限制最小。你已经见过public会导致什么样的麻烦了--所以只有当你有确定的原因的时候才把成员声明为public吧。这样才可以保证良好的封装。
★private意味着只有本类的其他成员才可以访问
把一个成员声明为private就意味着该成员只可以被本类的其他成员或者本类的其他实例访问。把一个类声明为private就意味着它只可以被它所在的命名空间的其他类访问--除非它存在于其他类中,这种情况下它只可以被包含它的类访问。
★protected意味着对于子类是公开的,对于其他类是私有的
你已经知道子类不可以访问父类的私有字段了--要用base关键字才可以访问父类的公有成员。如果子类可以访问父类的私有成员岂不是很方便么?所以就有了protected关键字。标记为protected的成员可以被自己本类的和子类的成员访问。
★internal意味着只对本程序集的其他类开放
创建一个程序集的时候可以用internal关键字来使得类只可以在本程序集中访问,这样你就可以只对外暴露你想要暴露的类。
★sealed意味着本类不可以被继承
.NET框架中有很多类你不可以继承。试着去继承一下string类。怎么样?编译器会报错--“不可以从密封的类型“string”继承”。你也可以对自己写的类做这种限制,在个、访问修饰符后面写上sealed即可。