7 Object-Oriented Programming (OOP)

面向对象的编程

用OOP/接口/类实现ADT

OOP的基本概念:封装与信息隐藏 继承与重写 多态、子类型、重载 静态与动态分派

我们首先谈谈Java中比较重要的 接口Interface

Java的接口是设计和表示ADT,并将其实现为类 实现该接口。 Interface和Class: 定义和实现ADT

接口中只有方法的定义,没有实现。接口之间可以继承与扩展。 一个类可以实现多个接口(从而具备了多个接口中的方法)。一个接口可以有多种实现类。

接口和类的区别,接口:确定ADT规约;类:实现ADT

可以不需要接口直接使用类作为ADT,既 有ADT定义也有ADT实现

实际中更倾向于使用接口来定义变量

接口中的每个 方法在所有类中都要实现,缺点是会导致部分方法的重复实现。通过default方法,在接口 中统一实现某些功能,无需在各个类中重复实现它。default 方法的典 型使用方式:以增量式的为接口增加额外的功能而不破坏已实现的类

使用接口隐藏信息:使用接口类型声明变量,客户端仅使用接口中定义的 方法,客户端代码无法直接访问属性,客户端仍然可以访问其他的非接口成员。

成员的可见性修改器

继承:

 

继承是为了代码重用 

子类中隐式可用的超类功能(公共,受保护)

多态:特殊多态 参数化多态 泛型编程 子类型多态 包含多态

特殊多态性(特殊多态): 当函数表示不同以及潜在的异构实现,具体取决于单独指定类型和组合的有限范围。特殊性多态都支持使用函数的多态性超载

参数化多态:编写代码时未提及任何特定类型,因此可以使用透明地使用任意数量的新类型。在面向对象的编程社区,这通常被称为泛型或泛型编程

子类型多态、包含多态:一个变量名字可以代表多个类的实例

重载:多个方法具有同样的名字,但有不同的参数列表或返回值类型

价值:方便client调用,client可用不同的参数列表,调用同样的函数

参数多态性是指方法针对多种类型时具有同样的行为 (这里的多种类型应具有通用结构),此时可使用统一的类型变量表达多种 类型

在运行时根据具体指定类型确定具 体类型(编译成class文件时,会用指定类型替换类型变量“擦除”

泛型编程是一种编程风格,其中数据类型和函数是根据待 指定的类型编写的,随后在需要时根据参数提供的特定类型进行实例 化。

泛型编程围绕“从具体进行抽象”的思想,将采用不同数据表示的 算法进行抽象,得到泛型化的算法,可以得到复用性、通用性更强 的软件。使用泛型变量的三种形式 :泛型类、泛型接口和泛型方法

API:一个类只有一个父类,但可以实现多个接口

 B是a的一个子类型“意味着”每个B都是a。

在规约方面:“每个B都满足A的规约。”如果B的规约至少与a的规约相同,则B只是a的一个子类型

规约当我们声明一个实现接口的类时,Java编译器自动强制执行此要求的一部分:它确保

A中的方法出现在B中,具有兼容的类型签名。如果不实现所有

在中声明的方法。子类型的规约不能弱化超类型的规约。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值