封装encapsulation
定义
对于一个类,需要让外部调用者直到的才暴露出来,不需要让外部调用者知道的全部隐藏起来
高内聚,低耦合:高内聚是指类内部复杂的数据处理尽量自己完成,不暴露给外部;低耦合是指尽量方便外部调用者的使用
优点
提高代码安全性
- 提高代码复用性
- 高类聚封装细节,便于修改内部代码,提高可维护性
-
实现
java通过访问控制符来控制细节,通过它我们知道哪些属性或方法需要封装,哪些需要暴露
访问权限修饰符
| 修饰符 | 同一个类 | 同一个包 | 子类 | 所有类 | | —- | —- | —- | —- | —- | | private | √ | | | | | default | √ | √ | | | | protected | √ | √ | √ | | | public | √ | √ | √ | √ |
private表示私有,只有自己类可以访问
- defaut表示没有修饰符修饰,只有同一个包的类能访问
- protected表示可以被同一个包的类以及其他包中的子类访问
-
封装简单规则
属性一般使用private访问权限
- 属性私有后,提供相应的get/set方法来访问相关属性,这些方法通常是public的,以提供对属性的赋值与读取操作(注意boolean变量的get方法用is开头)
一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰
多态polymorphism
基础概念
多态是指同一个方法调用,由于对象不同可能会有不同的行为
- 多态是方法的多态,不是属性的多态,多态与属性无关
- 多态的存在有3个必要条件,继承、方法重写,父类引用指向子类对象
- 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了
- 父类引用指向子类对象伴随发生了对象的向上转型,编译器会认为其为父类型,所以无法直接调用子类型独有的方法,需要使用时应强制转型为子类型再调用
- 强制转型中出现的错误在编译时不会报错,在运行时才会报错