面向对象-主线二:面向对象的三大特征:封装、继承、多态

封装与隐藏

  1. 程序设计追求的高内聚、低耦合
    高内聚:类的内部数据操作细节自己完成,不允许外部干涉
    低耦合:仅对外暴露少量的方法用于使用。
  2. 封装性的体现
    私有的变量提供公有的get\set方法。
    仅内部使用的私有方法
    单例模式私有的构造方法
  3. 权限修饰符
    只能修饰成员变量、构造器、方法、内部类
    类只能用public和缺省修饰 | 作用域 | 当前类 | 同一package | 子孙类 | 其他package | | —- | —- | —- | —- | —- | | public | √ | √ | √ | √ | | protected | √ | √ | √ | | | friendly | √ | √ | | | | private | √ | | | |

继承

  1. 继承的好处
    减少了代码的冗余,提高了代码的复用性。
    便于功能的扩展
    为多态提供基础
  2. 继承的格式
    会继承所有的属性和方法
    但是父类中的私有属性不能直接使用
  3. 继承的规定
    一个子类只能继承一个父类,不可以多继承
    一个父类可以由多个子类继承

    多态

  4. 理解多态性:可以理解为一个事物的多种形态

  5. 何为多态性:
    1. 对象的多态性:父类的引用指向子类的对象
  6. 多态的使用:虚拟方法调用
    1. 有了多态性后,我们在编译的时候只能调用父类的方法,但是运行时是调用的子类中重写的方法。
  7. 多态使用的前提:
    1. 继承
    2. 重写
  8. 对象的多态性只适用于方法不适用与属性
  9. 静态绑定和动态绑定

    1. 静态绑定,指方法间的重载,重载可以是父类和子类或者子类内部之间同名,不同参数列表之间的关系,他们的调用在编译期间就已经确定,被称之为:早绑定或者静态绑定
    2. 动态绑定,也就是多态性,指的是在满足重写、继承、父类引用指向之类对象之后在编译期间无法确定具体调用的方法,等到运行时,解释运行器才会确定具体运行的方法,这个称为:晚绑定或者动态绑定。

      向上转型和向下转型

  10. 对象的多态性是向上转型即父类引用指向子类对象。

  11. 向下转型是指父类的引用强制类型转化为子类的类型,格式:A a = (A) b; 且父类引用中存的实际类型为A(使用instanceof)。