第5章 专题:Java语言的接口
5.1 what?
一个Java接口是一些方法特征的集合。
接口继承:一个类实现一个接口。
实现继承:一个类是另一个类的子类。
接口和类的最重要区别:
接口仅仅描述方法的特征,而不给出方法的实现;而类不仅给出方法的特征,而且给出方法的实现。
5.2 why?
接口是对可插入性的保证。
关联的可插入性
关联:一个对象需要完成一项任务,所以需要知道其他的对象,并且调用其他对象的方法。这个对象对其他对象的知识叫做关联。
当前对象并不在意所关联的是哪一个具体类,而仅仅关心这个类是否实现了某一个接口。
调用的可插入性
类型
Java接口(以及Java抽象类)用来声明一个新的类型。
在理想的情况下,一个具体Java类应当只实现Java接口和抽象Java类中声明过的方法,而不应当给出多余的方法。
类型等级结构
混合类型:
如果一个类已经有一个主要的超类型,那么通过实现一个接口,这个类可以拥有另一个次要的超类型。这种
次要的超类型就叫做混合类型。
当一个具体类处于一个类的等级结构之中的时候,为这个具体类定义一个混合类型是可以保证基于这个类型的可插入性的关键。
5.3 how?
单方法接口:一个单方法接口只含有一个方法。
实现单方法接口的源代码:
public class MyThreadedClass extends SomeClass implements Runnable
{
.
.
.
public void run()
{
//write your code here
}
} ActionListener接口的源代码:
public interface ActionListener
{
public abstract void actionPerformed(ActionEvent event);
} 标识接口:
标识接口是没有任何方法和属性的接口。
标识接口不对实现它的类有任何语义上的要求,它仅仅表明实现它的类属于一个特定的类型。
java.io.Serializable、java.rmi.Remote等
java.io.Serializable接口的源代码:
package java.io;
public interface Serializable{} java.rmi.Remote接口的源代码:
package java.rmi;
public interface Remote{} 标识接口通常使用在工具类中,很少在其他地方使用。
常量接口:用Java接口来声明一些常量,然后由实现这个接口的类使用这些常量。
AppConstants接口的源代码:
public interface AppConstants
{
public static final DATA_SOURCE_NAME = "WEBSPHERE_DATA_SOURCE";
public static final USER_NAME = "APP_USER";
public static final PASSWORD = "w1nter";
}