C# 8.0本质论
上QQ阅读APP看书,第一时间看更新

6.5 访问修饰符

之前声明字段时,曾为字段声明添加关键字public作为前缀。public是访问修饰符,它标识了所修饰成员的封装级别。可选择六个访问修饰符:public、private、protected、internal、protected internal和private protected。本节介绍前两个。

初学者主题:封装(第二部分)——信息隐藏

除了组合数据和方法,封装的另一个重要作用是隐藏对象的数据和行为的内部细节。方法在某种程度上也能做到这一点:在方法外部,调用者看见的只有方法声明,看不见内部实现。但面向对象编程更进一步,它能控制类成员在类外部的可视程度。类外部不可见的成员称为私有成员

在面向对象编程中,封装的作用不仅仅是组合数据和行为,还能隐藏类中的数据和行为的实现细节,使类的内部工作机制不暴露。这减少了调用者对数据进行不恰当修改的几率,同时防止类的使用者根据类的内部实现来编程(以后若实现发生变化,程序将不得不跟着变)。

访问修饰符的作用是提供封装。public显式指明可从Employee类的外部访问被它修饰的字段。例如,可以从Program类中访问那些字段。

但如果Employee类要包含一个Password字段,那么应该如何设计?这时应允许在一个Employee对象上调用Logon()方法来验证密码,但不应允许从类的外部访问Employee对象的Password字段。

为隐藏Password字段,禁止从它的包容类的外部访问,应使用private访问修饰符代替public,如代码清单6.15所示。这样Password字段就只能在Employee类内部访问了。

代码清单6.15 使用private访问修饰符

虽然代码清单6.15没有演示使用private来修饰方法,但实际可以这么做。

注意,如果不为类成员添加访问修饰符,默认就是private。也就是说,成员默认私有。公共成员必须显式指定。