java中的接口的课件
第 6部分: 接 口 软件学院 黄淼 hm821124@126.com 平顶山学院软件学院 2011 接口与类 单亲继承与多亲继承 超类型和子类型 接口的声明 接口的成员 接口的继承 接口的实现 标记接口 作业 Interfaces and Classes (接口与类) 类(Class)是Java语言编程的基本单位,但并不是面向对象设计(OOD)的基本单位,因为类不仅提供设计,而且提供了实现 面向对象设计的基本单位是类型(Type),类型只关注行为的需求,并不限制行为的具体实现 Java语言使用接口(Interface)来定义类型,接口只提供方法的声明,并不提供方法的实现,方法的实现由接口的实现类提供 Interfaces and Classes (接口与类) 在Java语言中,接口是一种纯粹的设计组件。一个软件设计的好坏,很大程度上取决于它的整体架构,而这个整体架构其实就是对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构合理时,底层的具体实现需要考虑的就仅仅是一些算法和一些具体的业务实现了。当需要再开发另一个相近的项目时,以前的抽象层说不定还可以再次利用,OOD复用的重点其实应该是抽象层的复用,而不仅仅是具体的某一个代码块的复用。 Interfaces and Classes (接口与类) 类描述了一个实体,包括实体的状态,也包括实体可能发出的动作。 接口定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。 所以接口有点象一个规范、一个协议,是一个抽象的概念;而类则是实现了这个协议,满足了这个规范的具体实体,是一个具体的概念。 从程序角度,简单理解,接口就是函数声明,类就是函数实现。需要注意的是同一个声明可能有很多种实现。 单亲继承与多亲继承 Java语言中,类(Class)只支持单亲继承,一个类只能有唯一的父类 Java语言中,接口(Interface)可支持多亲继承,一个接口可以有多个父接口,子接口拥有所有父接口中声明的方法 Supertypes and Subtypes 一个类的父类和实现的所有接口都称为这个类的超类型(Supertype),而这个类称为其超类型的子类型(Subtype) 子类型的对象引用可以造型成其任意超类型(类或接口)的对象引用,这就是对象的多态性 通过接口类型的对象引用只能访问接口中声明的成员 Declaring Interfaces 声明接口的语法如下: interface { …接口成员声明… } 接口名的命名规范与类相同,接口也可以指定所属的包 Interface Modifiers 接口的修饰符可以有以下几种: (1) public — 与类的public修饰符相同 (2) abstract — 通常被省略,因为接口中的方法都是抽象的 (3) strictfp — 通常并不能限制接口中方法的实现,一般不使用 Members of Interface 接口中可以声明以下成员: (1) 域 (2) 方法 (3) 嵌套类和嵌套接口 接口中的成员都是public的,不能指定其它的访问控制修饰符 接口中的域默认是static final的,必须显式初始化 接口中的方法只能提供方法头声明,不能提供实现,且除abstract外,不能使用其它修饰符 Interface Verbose{ int SILENT = 0; int TERSE = 1; int NORMAL = 2; int VERBOSE = 3; void setVerbose(int level); int getVerbosity(); } 命名常量 方法声明 Extending Interfaces (接口的继承) 接口支持多亲继承,可以在关键字extends后面跟多个接口的列表,中间用逗号隔开,如: public interface SerializableRunnable extends java.io.Serializable, Runnable { …… } 子接口拥有所有父接口中声明的方法 子接口中的域将隐藏父接口中声明的同名域,被隐藏的父接口中的域必须通过父接口名访问 interface X{ int val=1; } interface Y extends X{ int val=2; int sum=val+X.val; } 接口中的方法覆盖和重载 接口中的方法可以重