面向对象编程的基本概念:object, class, attribute, method, interface, and enumerations
独特性:封装与信息隐藏、继承与重写、(多态、子类型、重载)、静态与动态分派
– Interface和Class: 定义和实现ADT
– 接口中只有方法的定义,没有实现
– 接口之间可以继承与扩展 – 一个类可以实现多个接口(从而具备了多个接口中的方法)
– 一个接口可以有多种实现类
接口与类的区别:
缺点:接口中的每个 方法在所有类中都要实现,缺点是会导致部分方法的重复实现
继承:
严格继承:子类只能添加新方法,无法重写超类中 的方法
Overriding:重写 的函数:完全同样的signature
实际执行时调用哪个方法,运行时决定。
父类型中的被重写函数体不为空:意 味着对其大多数子类型来说,该方法 是可以被直接复用的。
对某些子类型来说,有特殊性,故重 写父类型中的函数,实现自己的特殊要求
如果父类型中的某个函数实现体为空, 意味着其所有子类型都需要这个功能, 但各有差异,没有共性,在每个子类中 均需要重写。
重写之后,利用super()复用了父类 型中函数的功能,并对其进行了扩展
抽象类:
只有定义没有实现,不能实例化,继承某个抽象类的子类在实例化时,所有父类中的 抽象方法必须已经实现
多态:
重载:多个方法具有同样的名字,但有不同的参数列表或返回值类型,优点:方便client调用,client可用不同的参数列表,调用同样的函数
重写与重载:
1、重写时父类和子类中的方法具有相同的签名
2、签名不同时则为重载
3、子类重载了父类的 方法后,子类仍然继承了被重载的方法
泛型:
使用泛型变量的三种形式 :泛型类、泛型接口和泛型方法
类中如果 声明了一个或多个泛型变量,则为泛型类
泛型接口可以接非泛型的实现类