面向对象之封装
在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。
要访问该类的代码和数据,必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。
适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点
-
- 良好的封装能够减少耦合。
-
- 类内部的结构可以自由修改。
-
- 可以对成员变量进行更精确的控制。
-
- 隐藏信息,实现细节。
- 访问修饰符 public protected default private
- Java中,可以使用访问控制符来保护对类、变量、方法和构造方法的访问。Java 支持 4 种不同的访问权限。
- public:对所有类可见。使用对象:类、接口、变量、方法
- protected:对同一包内的类和所有子类可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- default (即默认,什么也不写): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。
- private: 在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)
- 外部如何访问内部的私有成员变量 适用本类中的共有方访问本类中的私有成员变量
- 在一个计算机讲座中 一名男同学摸了一名女同学的胸 女同学 怒吼道 这是我的隐私(private)部位 男同学轻蔑一笑说 but We are in the same class
- 此处this为指向成员变量
- 方法名与类名相同 方法体没有返回值但是在方法声明的时候却不需要使用void修饰的方法我们称之为构造方法
- 构造方法的作用 用于初始化对象 对象的属性赋值
- 没有参数的构造方法我们称之为无参构造方法
- 代码中没有编写过构造方法 jvm在执行对象初始化的时候帮助程序追加无参构造方法
- 注意当一个类中 既没有无参构造方法也没有有参构造方法的时候jvm会追加一个无参构造方法
- 但是当一个类中 存在有参构造方法没有编写无参构造方法的时候jvm不会追加无参构造方法
- 所以不论在任何情况下一定要自己手写有一个无参构造方法
- 花括号包裹起来的代码我们称之为代码块或代码段
- 只有一对花括号包裹起来的代码我们称之为构造代码块
- 构造代码块与构造方法一样都是在类被实例化的过程中被调用的
- 并且构造代码块在构造方法之前先执行
- 类每次被实例化的过程中都会调用构造代码块
- 使用static修饰的构造代码块我们称之为静态代码块
- 当类加载的时候执行静态代码块 而且静态代码块 仅执行一次 不可多次执行
- 而构造代码块是在类实例化的过程中执行的
- 执行优先级 静态代码块—>构造代码块—>构造方法
包装类 包装类对象—>基本数据类型 拆箱 基本数据类型—>包装类对象 装箱 自动装拆箱