封装encapsulation

定义

对于一个类,需要让外部调用者直到的才暴露出来,不需要让外部调用者知道的全部隐藏起来

  • 高内聚,低耦合:高内聚是指类内部复杂的数据处理尽量自己完成,不暴露给外部;低耦合是指尽量方便外部调用者的使用

    优点

  • 提高代码安全性

  • 提高代码复用性
  • 高类聚封装细节,便于修改内部代码,提高可维护性
  • 低耦合简化外部调用,便于调用者使用,便于扩展和协作

    实现

    java通过访问控制符来控制细节,通过它我们知道哪些属性或方法需要封装,哪些需要暴露

    访问权限修饰符

    | 修饰符 | 同一个类 | 同一个包 | 子类 | 所有类 | | —- | —- | —- | —- | —- | | private | √ | | | | | default | √ | √ | | | | protected | √ | √ | √ | | | public | √ | √ | √ | √ |

  • private表示私有,只有自己类可以访问

  • defaut表示没有修饰符修饰,只有同一个包的类能访问
  • protected表示可以被同一个包的类以及其他包中的子类访问
  • public表示可以被该项目的所有包中的所有类访问

    封装简单规则

  • 属性一般使用private访问权限

  • 属性私有后,提供相应的get/set方法来访问相关属性,这些方法通常是public的,以提供对属性的赋值与读取操作(注意boolean变量的get方法用is开头)
  • 一些只用于本类的辅助性方法可以用private修饰,希望其他类调用的方法用public修饰

    多态polymorphism

    基础概念

  • 多态是指同一个方法调用,由于对象不同可能会有不同的行为

  1. 多态是方法的多态,不是属性的多态,多态与属性无关
  2. 多态的存在有3个必要条件,继承、方法重写,父类引用指向子类对象
  3. 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了
  • 父类引用指向子类对象伴随发生了对象的向上转型,编译器会认为其为父类型,所以无法直接调用子类型独有的方法,需要使用时应强制转型为子类型再调用
  • 强制转型中出现的错误在编译时不会报错,在运行时才会报错