类定义了各个实例所共有的结构,使用类的 构造函数,可以定义属于该类的实例。 类的每一个实例都可以使用类中定义的操作 实例的当前状态,是由实例所执行的操作定 义的。 什么是继承 (inheritance)? a如果某几个类之间具有共性的东西(信息结 构和行为),抽取出来放在一个一般类中,而 将各个类的特有的东西放在特殊类中分别描 述,则可建立起特殊类对一般类的继承
什么是继承(inheritance)? ◼ 如果某几个类之间具有共性的东西 ( 信息结 构和行为 ), 抽取出来放在一个一般类中, 而 将各个类的特有的东西放在特殊类中分别描 述,则可建立起特殊类对一般类的继承。 ◼ 类定义了各个实例所共有的结构,使用类的 构造函数,可以定义属于该类的实例。 ◼ 类的每一个实例都可以使用类中定义的操作。 实例的当前状态,是由实例所执行的操作定 义的
汽车 大轿车)运货车救火车〖起重车 各特殊类中的底盘、发动机、轮胎、驱动装 置等可以作为共性集中到一般类汽车类中 各个特殊类可以从一般类中继承共性,这样 避免了重复。 复用共同的描述,继承性往往被看作是软件 复用的核心概念
◼ 各特殊类中的底盘、发动机、轮胎、驱动装 置等可以作为共性集中到一般类汽车类中。 各个特殊类可以从一般类中继承共性,这样 避免了重复。 ◼ 复用共同的描述,继承性往往被看作是软件 复用的核心概念。 汽车 大轿车 运货车 救火车 起重车
建立继承结构的好处: ◆易编程、易理解代码短,结构清晰 ◆易修改共同部分只要在一处修改即可 ◆易增加新类只须描述不同部分 n怎样建立一个好的继承层次 ◆类可以从父类继承,父类又可以从它的父 类继承,形成多层次的继承结构。 ◆当增加一个新类时,不一定在最低层,可 能需要插在中间层,这样可能需要调整原 来的层次结构
◼ 建立继承结构的好处: ◆ 易编程、易理解 代码短, 结构清晰 ◆ 易修改 共同部分只要在一处修改即可 ◆ 易增加新类 只须描述不同部分 ◼ 怎样建立一个好的继承层次 ◆ 类可以从父类继承,父类又可以从它的父 类继承,形成多层次的继承结构。 ◆ 当增加一个新类时,不一定在最低层,可 能需要插在中间层,这样可能需要调整原 来的层次结构
汽车 大轿车)运货车救火车〖起重车 0现要建立一个新类起重车。它的 底盘、发动机、轮胎、驱动装置/起厘车 等都在既存类汽车中。关系如右类 图所示。新类是既存类的特殊情 形。这时直接让起重车类作为汽\汽车类 车类的子类即可
现要建立一个新类起重车。它的 底盘、发动机、轮胎、驱动装置 等都在既存类汽车中。关系如右 图所示。新类是既存类的特殊情 形。这时直接让起重车类作为汽 车类的子类即可。 汽车 大轿车 运货车 救火车 起重车 起重车 类 汽车类
e现要增加一个新类拖拉机。它的底盘、发动 机等与汽车类不同,但驱动装置、轮胎等与 汽车类相同。关系如下图所示。 调整继承结构。建立一个新的一般的车辆类 把拖拉机与汽车类的共性放到车辆类中,拖 拉机与汽车类都成为车辆类的子类。 n车辆是抽象类,相关操作到子类汽车类去找。 车辆 汽车类 拖拉机类 汽车 拖拉机
现要增加一个新类拖拉机。它的底盘、发动 机等与汽车类不同,但驱动装置、轮胎等与 汽车类相同。关系如下图所示。 ◼ 调整继承结构。建立一个新的一般的车辆类, 把拖拉机与汽车类的共性放到车辆类中,拖 拉机与汽车类都成为车辆类的子类。 ◼ 车辆是抽象类,相关操作到子类汽车类去找。 汽车类 拖拉机类 汽车 车辆 拖拉机