接口(interface)
接口的作用
接口用于描述一组对外公开的行为规范。它主要有以下作用:
- 制定统一的功能标准。
- 降低调用方与具体实现类之间的耦合。
- 允许不同实现类以统一的接口类型传递和使用。
接口的定义
使用 interface 关键字定义接口:
public interface IFirst {
String NAME = "TOM";
void firstMethod();
default void firstMethod2() {
System.out.println("firstMethod2");
}
static void firstMethod3() {
System.out.println("firstMethod3");
}
}接口中的字段默认使用 public static final 修饰,因此本质上都是常量;普通抽象方法默认使用 public abstract 修饰。Java 8 开始,接口还可以定义默认方法和静态方法。
接口不能直接实例化,必须由类实现后再创建实现类对象。
实现接口
类使用 implements 关键字实现接口。一个类可以实现多个接口;非抽象实现类必须重写接口中的全部抽象方法。
public class FirstImpl implements IFirst, ISecond {
@Override
public void firstMethod() {
System.out.println("实现 firstMethod 方法");
}
@Override
public void secondMethod() {
System.out.println("实现 secondMethod 方法");
}
}调用时通常使用接口类型引用实现类对象,从而面向接口编程:
public class Test {
public static void main(String[] args) {
IFirst first = new FirstImpl();
ISecond second = new FirstImpl();
first.firstMethod();
second.secondMethod();
}
}接口之间的继承
接口可以使用 extends 继承一个或多个接口。
public interface ITest extends IFirst, ISecond {
}

使用接口制定标准
例如,要制作一个聚合多个视频平台资源的网站,可以先定义视频资源接口,再让各平台分别提供实现。业务代码只依赖接口,不直接依赖某个平台的具体类。
public interface IVideo {
void getResource(String name);
}
这样可以在不修改主要业务流程的情况下替换具体实现。
工厂设计模式
工厂模式把创建对象的过程封装到工厂类中。调用方通过工厂获取接口对象,不需要直接使用具体实现类的构造器。
public class VideoFactory {
public static IVideo getVideoObject() {
return new AQYVideo();
}
}
public class Test {
public static void main(String[] args) {
IVideo video = VideoFactory.getVideoObject();
video.getResource("xxx");
}
}
上面的代码仍由工厂决定创建哪一种实现类,但调用方只依赖 IVideo 接口,耦合度比直接创建具体类更低。
面向对象分析与设计
UML 可以辅助面向对象分析与设计。常见图包括用例图、类图、时序图、状态图和活动图。其中,类图主要描述类、接口以及它们之间的关系。
类图中的常见关系
泛化关系
表示类之间的继承关系,在 Java 中通常使用 extends。
实现关系
表示类实现接口,在 Java 中使用 implements。
依赖关系
一个对象在某个方法中临时使用另一个对象,通常表现为方法参数、局部变量或方法返回值。例如,司机类的驾驶方法可以接收交通工具接口类型的参数。
关联关系
一个对象长期持有另一个对象,通常表现为成员变量。例如,球员类中定义球队属性属于一对一关联;球队类中保存多个球员属于一对多关联。如果双方都持有对方的引用,则属于双向关联。
喜欢的话,留下你的评论吧~