Thinking In Java学习进程---对象的入门1.3 实现方案的隐藏
来源:互联网 发布:python ide eclipse 编辑:程序博客网 时间:2024/06/06 03:51
从根本上说,大致有两方面的人员涉足面向对象的编程:“类创建者”(创建新数据类型的人)以及“客户程序员”(在自己的应用程序中采用现成数据类型的人)
对客户程序员来讲,最主要的目标就是收集一个充斥着各种类的编程“工具箱”,以便快速开发符合自己要求的应用。
而对类创建者来说,他们的目标则是从头构建一个类,只向客户程序员开放有必要开放的东西(接口),其他所有细节都隐藏起来;
那么为什么要促使我们控制对成员的访问?
第一个原因:是防止程序员接触他们不该接触的东西——通常是内部数据类型的设计思想。若只是为了解决特定的问题,用户只需操作接口即可,毋需明白这些信息。我们向用户提供的实际是一种服务,因为他们很容易就可看出哪些对自己非常重要,以及哪些可忽略不计。(个人理解:也就是说调用者只需根据自己的实际用途传递参数得到相应即可,无需让调用者考虑内部处理方式)
第二个原因:是允许库设计人员修改内部结构,不用担心它会对客户程序员造成什么影响。例如,我们最开始可能设计了一个形式简单的类,以便简化开发。以后又决定进行改写,使其更快地运行。若接口与实现方法早已隔离开,并分别受到保护,就可放心做到这一点,只要求用户重新链接一下即可。(个人理解:在得到控制后的创建者可以在不影响使用者的调用的前提下方便对自己创建接口或者其他的方法进行更好的维护)
Java采用三个显式(明确)关键字以及一个隐式(暗示)关键字来设置类边界:public,private,protected以及暗示性的friendly。若未明确指定其他关键字,则默认为后者。这些关键字的使用和含义都是相当直观的,它们决定了谁能使用后续的定义内容。“public”(公共)意味着后续的定义任何人均可使用。而在另一方面,“private”(私有)意味着除您自己、类型的创建者以及那个类型的内部函数成员,其他任何人都不能访问后续的定义信息。private在您与客户程序员之间竖起了一堵墙。若有人试图访问私有成员,就会得到一个编译期错误。“friendly”(友好的)涉及“包装”或“封装”(Package)的概念——即Java用来构建库的方法。若某样东西是“友好的”,意味着它只能在这个包装的范围内使用(所以这一访问级别有时也叫作“包装访问”)。“protected”(受保护的)与“private”相似,只是一个继承的类可访问受保护的成员,但不能访问私有成员。
- Thinking In Java学习进程---对象的入门1.3 实现方案的隐藏
- 【Thinking in java】之实现方案的隐藏
- Thinking In Java学习进程---对象的入门1.2 对象的接口
- Thinking In Java学习进程---对象的入门1.1抽象的进步
- Thinking In Java学习进程---对象的入门1.5 继承:重新使用接口
- Thinking in java -6 隐藏的实现 Hidden implementation
- 《Thinking in Java》狗血的学习笔记-1对象
- 《Thinking in Java》学习笔记——第一章:对象入门
- [Thinking in JAVA] JAVA多线程的学习
- thinking in Java之对象入门
- Thinking in java 工厂模式的学习
- JAVA基础学习篇----《thinking in java》第五章:隐藏实现
- Thinking in java-5 Java中对象存在的意义
- 【学习笔记】Thinking in java (第三版)第一章 对象的介绍(Introduction to objects)
- 【学习笔记】Thinking in java (第三版)第五章 隐藏实现(Hiding the implementation)
- Thinking in Java之对象的创建过程
- Thinking in java(11章 对象的集合)
- Thinking in Java 笔记(第八章 对象的容纳)
- mysql json字段的使用与意义
- 【c++】size_t 和 size_type的区别
- jQuery的核心
- js 原生预览图片
- 适配器模式
- Thinking In Java学习进程---对象的入门1.3 实现方案的隐藏
- Hibernate之连接池配置
- 前端技术博客
- linux exercise14
- LTE-TDD随机接入过程(6)-分场景描述竞争接入和非竞争接入的流程
- 【机器学习PAI实践五】机器学习眼中的《人民的名义》
- Python 多进程 multiprocessing.Pool类详解
- poj2947——Widget Factory(高斯消元求模线性方程)
- spark reduceByKey的小问题