第四章面向对象程序设计 面向对象的特点主要概括为抽象性、继承性 多态性和封装性。本章我们将站在面向对象 程序设计原则和方法的高度,围绕这4个特 点讲解面向对象程序设计(OOP)的基本方 法
Java程序设计大学教程 第四章 面向对象程序设计 面向对象的特点主要概括为抽象性、继承性、 多态性和封装性。本章我们将站在面向对象 程序设计原则和方法的高度,围绕这4个特 点讲解面向对象程序设计(OOP)的基本方 法
4.1原则和方法 面向对象程序设计的重要原则有: ■分而治之原则 ■封装原则 ■接口原则 信息隐藏原则 一般性原则 可扩展性原则 ■抽象原则
Java程序设计大学教程 4.1原则和方法 面向对象程序设计的重要原则有: ◼ 分而治之原则 ◼ 封装原则 ◼ 接口原则 ◼ 信息隐藏原则 ◼ 一般性原则 ◼ 可扩展性原则 ◼ 抽象原则
4.1原则和方法 面向对象在程序设计中实现的方法: ■分解与封装 灯与卖 ■服务与客户 简单稳定 b复杂多变
Java程序设计大学教程 4.1原则和方法 面向对象在程序设计中实现的方法: ◼ 分解与封装 ◼ 继承与合成 ◼ 接口与实现 ◼ 服务与客户
4.2继承 对象的继承是一种在保持对象差异性的同时 共享对象相似性的复用。它是源自类的泛化 机制。这种抽象机制允许类之间共享代码 大大减少了代码长度并且使软件易于维护 对象通过继承,保证了实现部分紧内聚和松 耦合的良好特性
Java程序设计大学教程 4.2 继承 对象的继承是一种在保持对象差异性的同时 共享对象相似性的复用。它是源自类的泛化 机制。这种抽象机制允许类之间共享代码, 大大减少了代码长度并且使软件易于维护。 对象通过继承,保证了实现部分紧内聚和松 耦合的良好特性
4.2.1使用继承 1.基类与派生类 示例程序4-2 Square类( Square. java) 3aa中派生类通过 extends public class Square extends Retangle t 示例程序4-1 Retangle类( Retangle.java) public Square ( double side)t public class Retangle t idth) public Retangle(double l, double wt public double calcPerimetero t length =I; return length*4 width =w public String toString t public double calcPerimeterot return"边长为"+ length+"的正方形"; return 2*(length width) public double calcArea return length width; are public String tostring t Square需要重写并覆盖基类的 calcPerimeter方法来计算周长 return"长为"+ length+"宽为"+wdth+"的长方形"; eter double 周长=4× length rIng protected double length; private double width 四+∠达1U类图中, Square继承了 Rectangle,是 Rectangle类的扩展
Java程序设计大学教程 4.2.1 使用继承 1. 基类与派生类 ◼ Java中派生类通过extends 关键字继承基类,并通过 super关键字访问基类的构 造函数和方法。 ◼ Java中所有的类都继承了 Object类的toString方法, 我们可以重写并覆盖 toString方法,使之带有对 象的具体信息,以便我们跟踪 和调试对象。 ◼ 继承关系形成了树状的类层次 结构。继承产生的派生类不能 直接访问其基类的private成 员,但所有其他基类成员通过 继承成为派生类的成员后,保 持它们原来的成员的可访问性, 并可在派生类中使用。 面积 = length × width 周长 = 2 × (length + width) Square需要重写并覆盖基类的 calcPerimeter方法来计算周长。 周长 = 4 × length Square可以继承基类Rectangle的 calcArea方法来计算面积,无须 另写代码 图 4-2在这个UML类图中,Square继承了Rectangle,是Rectangle类的扩展 示例程序 4-1 Retangle类(Retangle.java) public class Retangle { public Retangle(double l, double w) { length = l; width = w; } public double calcPerimeter() { return 2 * (length + width); } public double calcArea() { return length * width; } public String toString() { return "长为" + length + "宽为" + width + "的长方形"; } protected double length; private double width; } 示例程序 4-2 Square类(Square.java) public class Square extends Retangle { public Square(double side) { super(side,side); } public double calcPerimeter() { return length * 4; } public String toString() { return "边长为" + length + "的正方形"; } }