Java_面向对象(一)

96 阅读3分钟

ch05 面向对象(一)

参考学习源码:github源码_面向对象

类用于描述客观世界里某一类对象的共同特征,而对象则是类的具体存在。
Java面向对象三大特征:封装,继承,多态。

5.1 类和对象

  1. 成员变量用于定义该类的实例所包含的状态数据;方法则用于定义该类或该类的实例的行为特征或功能实现;构造器用于构造该类的实例。\

  2. this 关键字总是指向调用该方法的对象。最大作用就是让类中的一个方法,访问该类里的另一个方法或实例变量。

5.2 方法详解

  1. 同一个类的方法调用另外一个方法,如果被调用的是普通方法,则默认使用this作为调用者,如果被调用的是静态方法,则默认使用类作为调用者。\

  2. Java的方法参数传递只有一种,就是值传递。就是将实际参数值得副本(复制品)传入方法内,而参数本身不会受到任务影响。\

  3. 方法递归:一个方法体内调用自身。递归一定要向已知方向递归。\

  4. 方法重载:同名不同参。

5.3 成员变量和局部变量

5.4 隐藏和封装

  1. 封装:将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象的内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。\

  2. 控制符:private < default < protected < public\

  3. 模块设计追求高内聚(尽可能把模块的内部数据、功能实现细节隐藏在模块内部独立完成,不允许外部直接干预),低耦合(仅暴露少量的方法给外部使用)。\

5.5 深入构造器

5.6 类的继承

  1. Java具有单继承的特点,每个子类只有一个直接父类。

  2. 方法重写(覆盖):子类包含与父类同名的现象。遵循“两同两小一大”规则。方法名、形参列表相同;子类方法返回值类型应比父类方法的返回值类型更小或相等,子类方法
    声明抛出的异常类应比父类方法声明抛出的异常类更小或相等;子类方法的访问权限应比父类方法的访问权限更大或相等。\

  3. super用于限定该对象调用它从父类继承得到的实例变量或方法。\

  4. 在一个构造器中调用另一个重载的构造器使用this调用来完成,在子类构造器中调用父类构造器使用super调用来完成。\

  5. super调用的是其父类的构造器,而this调用的是同一个类中重载的构造器。\

5.7 多态

多态:编译时和运行时类型不一致。

5.8 继承与组合

  1. 继承要表达是一种"是(is-a)"的关系,而组合表达的是"有(has-a)"的关系。

5.9 初始化块

  1. 初始化块只在创建Java对象时隐式执行,而且在执行构造器之前执行。\

  2. 类初始化阶段,先执行最顶层父类的初始化块,然后依次向下,直到执行当前类的静态初始化块。\

  3. 对象初始化阶段,先执行最顶层父类的初始化块,最顶层的父类构造器,然后依次向下,直到执行当前类的初始化块,当前类的构造器。