快速业务通道

冒号和他的学生们(连载26)——访问控制 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

冒号和他的学生们(连载26)——访问控制

时间:2011-07-03 BlogJava 郑晖

26.访问控制

夫轻诺必寡信,多易必多难                  ——《老子·德经》

问号提问:“信息隐藏是否专指用private来控制访问?”

“这正是我们的下一个焦点。”冒号微颔,“访问修饰符(access modifier)除了可以应用于类成员外,在Java和C#中还能应用于整个类。public类自然是公开的,而缺省的类在Java 和C#中分别仅对同一package和assembly开放。”

逗号不觉有异:“这有什么讲究吗?”

“当然。越是基本的语法越讲究,也越容易被忽视。”冒号的嘴角漾着一丝微笑,“许多人在写类时习惯上来就敲‘public class’,或者通过IDE自动生成类的雏形,缺省的一般都是public类。这样看似无害,但绝非好习惯。事实上大多数类是不需要公开的,这是一种更高层次的信息隐藏。每个package或assembly,如果设计合理,应该是具有相关功能的类和接口的集合。其中不少只是内部使用的,毫无必要公诸于众。”

引号了然于心:“这与对象封装类似,既向客户明确了接口类,又可消弭修改内部类对客户的影响。”

叹号仍心存疑虑:“OOP是鼓励和支持重用的。好不容易开发出来的类却深藏不露,岂不可惜?客户也许一时用不上,但指不定以后会用上。”

“问得好!这也是大多数人的心理。按照你的逻辑,我同样可以说:这个类的方法是好不容易开发出来的,藏起来太可惜了,统统public吧!”冒号惟妙惟肖地学着叹号的神态和腔调,把众人都逗乐了。

叹号心欲辩而口难言。

“重用是令人兴奋的,合理的重用既节省了开发时间,又节省了维护时间,代码也显得更简洁优美,可谓一举多得。但是——”冒号一转话锋,“过犹不及,过度追求重用也会造成滥用和误用。一方面,开发者容易沉溺于局部重用的妙处而忽略整体的设计,淡忘所开发类最核心的职责;另一方面,一旦所重用的类或方法发生改变,所有的重用者均受牵连,先前节省的时间或许会加倍地偿还。”

引号深有感触地说:“难就难在如何把握这个度啊!”

“任何一门技艺到了高级阶段,都是‘度’的学问。”冒号一如既往地推而广之,“初级程序员的理想是为所欲为——能用编程解决一切问题;中级程序员的理想是尽善而为——追求最佳解决方案;高级程序员的理想是有所为有所不为——重在整体设计的选择,能抵制局部技巧的诱惑;最高理想是无为而无不为——无论宏观设计还是微观实现,均非刻意选择,却自然合度。”

句号心念一动:“这四个阶段可分别用四句广告词来代表:从全球通的‘我能’,到奥运会的‘更快、更高、更强’,到安踏的‘我选择,我喜欢’,最后是马爹利的‘心意有别,心中有度’。”

“到底是时尚小青年,我的推而广之到你这儿变成了广而告之啦。”冒号半夸半谑,“书归正传,我们再说说类成员的访问修饰符。”

冒号在黑板上画了一张表格——

范围" 语言

C++

Java

C#

无限制

Public

Public

public

子类或同一包

Protected

protected internal

同一类或子类

Protected

private protected(已弃用)

protected

同一包

package(缺省)

internal

同一类

private(缺省)

Private

private(缺省)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号