软构笔记-7-面向对象的编程
目录
软构7
本章大纲:
- OOP 的基本概念
- OOP 的显著特征
- 封装与信息隐藏
- 继承与重写
- 多态、子类型、重载
- 静态与动态分派
- JAVA 中的一些重要的 Object方法
- 设计良好的 Classes
基本概念
- Object
- State
- Behavior
- Classes
所有的 object 都有一个类,类中定义了 methods 和 fields,所有的 methods 和 fields 都是类成员。
笼统地说,一个类的方法就是它的 API。
Interface
- interface 和 Class:定义和实现 ADT
- 接口之间可以继承和扩展
- 一个类可以实现多个接口
- 一个接口可以有多种实现类
在 JAVA 中,接口用来确定 ADT 规约;类用来实现 ADT。
在 interface 中使用 default
方法
- 在传统方法中,接口中的每个方法在所有类中都要实现
- 通过
default
方法,在接口中统一实现某些功能,无需在各个类中重复实现它
继承与重写
重写
子类能够重写父类中非严格继承的方法,而不能继承如 final
修饰的方法。
- 重写父类方法之后,子类仍然可以在方法中使用
super()
来调用父类的方法。
构造函数的重写
子类的构造函数必须首先调用父类的构造函数 super()
,从而从此追溯到 Object 类。
Abstract Class 抽象类
- Abstract method(抽象方法):
一个只有声明没有实现的方法被称为抽象方法,用关键字 $abstract$。 - Abstract class(抽象类):
至少含有一个抽象方法的类被称作抽象类。 - Interface:
An abstract class which has only abstract methods.
Polymorphism, subtyping and overloading 多态、子类型、重载
三种多态
- 特殊多态
- 参数化多态
- 子类型多态、包含多态
Overloading 重载
- 重载:多个方法具有同样的名字,但有不同的参数列表或返回值类型
- 价值:方便client调用,client可用不同的参数列表,调用同样的函数
重载的规则
- 必须有不同的参数列表
- 相同/不同的返回值类型
- 相同/不同的 public/private/protected
- 可以抛出新的或者更广的检查异常
Overriding vs. Overloading
子类型多态
子类型只是超类型的子集。
- ArrayList and LinkedList are subtypes of List.
继承和子类型:层次结构一瞥
- Java Collections API