第四章 接口的定义与应用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

代理模式
应用的场景:一个对象不想或者不能直接引用另外一个对象,那么通过代 理可以在两者之间起到连接作用。
பைடு நூலகம்
(1)抽象目标角色:声明真实目标对象和代理的共同接口。
(2)代理角色:内部包含对真实目标对象的引用。
(3)真实目标角色:是客户端真正要交流的对象,需要被代理。
适配器模式
使用场景:将一个类的接口(被适配对象)转换成客户希望调用 的另外一个接口(目标)。
接口的定义
一个接口的定义包含以下部分:
访问控制符 接口关键字 接口名
[public] interface MyInterface 接口可以继承接口 [extends Interface1…] { 接口中可以定义常量 [public static final] double E = 2.718282;
Java中的接口: 一种特殊的“类”,只能包含常量和抽象方法,属于引用数 据类型。
接口的作用
为什么要定义接口: Java出于安全性考虑,只支持单继承,而不支持多继承。 那么就与现实世界相违背。
接口的作用:
配合继承解决Java无法多继承的缺点,提供方法声明 与实现相分离的机制,使实现接口的各个类表现出多 态性。 A a=new B(); (B是实现了接口A的类)
Circle -radius : float +getArea() : float +getGride() : float
Rectangle -length : float -width : float +getArea() : float +getGride() : float
定义一个测试类,分别创建圆形类和矩形类的对象, 输出各自的面积和周长。
适配器模式
模式的三种角色: 目标(Target):客户想使用的接口。 被适配者(Adaptee):一个已经存在的接口或抽象类,需要被适配。 适配器(Adapter):是一个类,实现目标接口并包含被适配者的引用。
接口的特点
(1)接口可以定义为多继承。类不能多继承。
interface A { double getArea(); } interface B{ String getName(); } public interface C extends A,B{ String getAddress(); }
Interface interVar=new InterfaceImp();
抽象类与接口的比较-区别
比较点 抽象类 接口
定义
组成 子类
abstract class
变量、常量、构造方法、抽象 方法、方法
interface
全局常量、抽象方法
子类通过extends继承,一个子 子类通过implements实现, 类只能继承一个抽象类 子类可以实现多个接口
接口的高级应用-设计模式
设计模式针对面向对象系 统中重复出现的设计问题,提 出一个通用的设计方案,并予 以系统化的命名和动机解释。 设计模式描述了问题、解决方 案、在什么条件下使用该解决 方案及其效果。
解决方案是解决该问题的 一组精心安排的通用的类和接 口,再经过定制和实现就可用 来解决特定上下文中的问题。
接口的定义与应用
信息工程学院 欧阳宏基
本章内容
1.接口的概念 2.接口的定义与注意事项(重点) 3. 接口在程序开发中的应用(理解)
几种简单的设计模式
4.抽象类与接口的比较(重点)
接口的定义
现实世界的接口: 两个不同物体之间要相互交互,必须通过的一个中介,没有 这个中介,两者无法交互。 软件世界的接口: (1) 狭义:某个程序设计语言所提供的API。 (2) 广义:人与软件交互的图形界面(GUI)。
(2)接口没有最高层,类有最高层-Object
接口的特点
(3) 接口中的方法默认为public abstract;接口中的 成员属性默认为public static final。 例如: double PI=3.14f; 系统默认为public static final double PI=3.14159;
关系
实现限制 典型设计 模式
一个抽象类可以实现多个接口
存在单继承局限 模板模式
接口不能继承抽象类但可 以实现多个接口
不存在此限制 代理模式、适配器模式
优先使用接口,接口没有单继承这个限制
抽象方法,只声明不实现
[public abstract] void doSomething (int i, double x); [public abstract] int doSomethingElse(String s); }
接口的实现
接口的实现是交给类来完成的。
[public] class MyInterfaceImp [extends 父类名] implements 接口名 { 一个类可以实现多个接口
继承了接口中的常量
实现接口的抽象方法, 添加方法体
public void doSomething (int i, double x) { } public int doSomethingElse(String s) { } }
接口的简单应用
<<接口>>Shape +getArea() : float +getGride() : float
(4) 接口中的方法只能是抽象方法,不存在非抽象方法 和构造方法。
抽象类与接口的比较-相同点
(1) 都包含抽象方法,必须被子类实现。 (2) 不能被实例化。
(3) 都是引用数据类型。可以声明抽象类及接口变量, 并将子类的对象赋给抽象类变量。 AbstractClass ac=new AbstractClassImp(); 或将实现接口的类的对象赋给接口变量。
相关文档
最新文档