封装与隐藏
封装的概述
1.为什么需要封装
我要用洗衣机,只需要按一下开关和洗涤模式就可以了。有必要了解洗衣机内部的结构吗?有必要碰电动机吗?
我们使用的电脑,内部有CPU、硬盘、键盘、鼠标等等,每一个部件通过某种连接方式一起工作,但是各个部件之间又是独立的
现实生活中,每一个个体与个体之间是有边界的,每一个团体与团体之间是有边界的,而同一个个体、团体内部的信息是互通的,只是对外有所隐瞒。
面向对象编程语言是对客观世界的模拟,客观世界里每一个事物的内部信息都是隐藏在对象内部的,外界无法直接操作和修改,只能通过指定的方式进行访问和修改。封装可以被认为是一个保护屏障,防止该类的代码和数据被其他类随意访问。适当的封装可以让代码更容易理解与维护,也加强了代码的安全性。
随着我们系统越来越复杂,类会越来越多,那么类之间的访问边界必须把握好,面向对象的开发原则要遵循“高内聚、低耦合”,而“高内聚,低耦合”的体现之一:
高内聚:类的内部数据操作细节自己完成,不允许外部干涉;
低耦合:仅对外暴露少量的方法用于使用
隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性、可维护性。通俗的讲,把该隐藏的隐藏起来,该暴露的暴露出来。这就是封装性的设计思想。
2.如何封装
通俗的讲,封装就是把该隐藏的隐藏起来,该暴露的暴露出来。那么暴露的程度如何控制呢?就是依赖访问控制修饰符,也称为权限修饰符来控制。
权限修饰符
1.权限修饰符有哪些
Java中权限修饰符共有4种,范围从大到小分别是public,protected,缺省(即什么都不写),private。
2.权限修饰符的作用
权限修饰符的作用是用来控制一个成员能够被访问的范围。
3.权限修饰符声明的位置
权限修饰符置于类或者类的成员定义之前。
可以修饰成员变量,方法,构造器,内部类,不同权限修饰符修饰的成员变量能够被访问的范围将受到限制
4.权限修饰符的作用范围
权限修饰符用来控制相应的可见边界。边界有如下:
类
包:java包类库由一组支持程序开发的类组成
子类:java中子类的定义为在有继承关系的类中extends关键字前面的类则称为子类。
模块:模块是在 Java 9 中引入的
权限修饰符共4种:public,protected,缺省(即什么都不写),private
权限修饰符 |
类内部 |
同包 |
其它包子类 |
其它包非子类 |
不同模块 |
public |
√ |
√ |
√ |
√ |
默认不可以,但可以建立依赖 |
protected |