软件构造3.4 OOP

3.4 oop
接口、抽象类、具体类
1、Object对象:
  • state——fields
  • behavior——methods
2、Classes类——fields+methods
  • class vs instance(实例)
  • static vs instance

3、接口Interface
  1. Interface和Class: 定义和实现A
  2. 接口之间可以继承
  3. 一个类可以实现多个接口
  4. 一个接口可以有多种实现
过程:
  1. 设计一个接口 public interface complex{ } 确定ADT规约
  1. 某个类class implements 接口complex 对ADT做具体的实现
  1. 调用类中函数

4、抽象类 abstract
  • 抽象方法Abstract method:方法只有标识没有具体实现
抽象类:包含抽象方法的类
接口:可以看成是一个类中只有抽象方法
Concrete class ---> Abstract Class ---> Interface
  • 在子类中具体实现抽象函数


继承、override extends
  1. 严格继承:子类只能添加新方法,无法重写超类中的方法;
  • 如果不能被重写overwrite,函数前有final修饰
  • 空函数可以在子类中重写overwrite

2、override(覆盖/重写)
  • 重写时调用supper
  • 重写时不要改变原方法的本意


多态Polymorphism、overload
1、多态Polymorphism
  • Ad hoc polymorphism (特殊多态):功能重载
一个函数可能有多种类型,而且这些不同类型的函数行为不相关
更多见下文Overload
  • Parametric polymorphism (参数化多态) 泛型
一些类型中呈现出一定的结构 具体见下文泛型
  • 子类型多态
子类型的规约不能弱化超类型的规约
不同类型的对象可以统一的处理而无需区分
2、Overload 重载
  • 多个方法具有同样的名字,但有不同的参数列表或返回值类型;
  • 方便client调用,client可用不同的参数列表,调用同样的函数;
  • 是一种静态多态:根据参数列表进行最佳匹配;静态类型检查;在编译阶段时决定要具体执行哪个方法 (static type checking) (与之相反,overridden methods则是在run-time进行dynamic checking)
  • Overload规则
  • Override vs Overload
重写时保持不变,重载时改变。具体看下图

泛型
泛型变量,泛型类、泛型接口、泛型方法

泛型接口
  • 泛型接口,非泛型的实现类
  • 泛型接口,泛型的实现类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值