Java接口(Interface)是一种抽象类型,用于定义类的行为规范,本身不包含实现,需由类通过 implements 关键字实现。它是Java面向对象编程中实现多态和组件化设计的重要工具,以下是核心概念和用法:
一、接口的定义与特点
1. 定义格式
public interface 接口名 {
// 常量(默认public static final)
int MAX_SIZE = 100;
// 抽象方法(默认public abstract)
void method1();
String method2(String param);
}
2. 核心特点
- 接口中所有属性默认是 public static final 常量,所有方法默认是 public abstract 抽象方法(可省略修饰符)。
- 接口不能被实例化,只能被类实现或接口继承。
- 一个类可实现多个接口(解决Java单继承限制),接口可继承多个接口(用 extends 关键字)。
二、类实现接口的方式
1. 单接口实现
class MyClass implements MyInterface {
// 必须实现接口的所有抽象方法
@Override
public void method1() {
System.out.println("实现方法1");
}
@Override
public String method2(String param) {
return "结果:" + param;
}
}
2. 多接口实现(示例)
interface Runable { void run(); }
interface Flyable { void fly(); }
class SuperMan implements Runable, Flyable {
@Override public void run() { /* 实现奔跑 */ }
@Override public void fly() { /* 实现飞行 */ }
}
三、接口的继承(多继承特性)
interface A { void methodA(); }
interface B { void methodB(); }
// 接口C继承接口A和B(多继承)
interface C extends A, B {
void methodC();
}
class MyClass implements C {
// 必须实现A、B、C中的所有方法
@Override public void methodA() {}
@Override public void methodB() {}
@Override public void methodC() {}
}
四、接口的应用场景
1. 实现多态
接口引用可指向实现类对象,通过同一接口调用不同实现类的方法:
// 接口作为引用类型
MyInterface obj = new MyClass(); // 接口引用指向实现类对象
obj.method1(); // 调用MyClass的实现
2. 定义规范(如API接口)
例如Java集合框架中, List 、 Set 等接口定义了数据操作规范, ArrayList 、 HashSet 等类负责具体实现。
3. 组件化设计
接口分离不同功能模块,使代码解耦(如MVC架构中,接口定义服务层与控制层的交互规范)。
五、Java 8+对接口的增强
1. 默认方法(Default Method)
- 用 default 关键字定义带实现的方法,实现类可直接使用或重写:
interface NewInterface {
default void defaultMethod() {
System.out.println("默认方法实现");
}
}
2. 静态方法
- 接口中可定义 static 方法(用于工具方法,如 Collections.sort() ):
interface Util {
static void printInfo() {
System.out.println("工具方法");
}
}
// 调用:Util.printInfo();
六、接口与抽象类的区别
对比项 接口(Interface) 抽象类(Abstract Class)
定义方式 interface 关键字 abstract class 关键字
实现方式 类用 implements ,可多实现 类用 extends ,单继承
方法实现 方法默认抽象(Java 8+可加默认实现) 可包含抽象方法和普通方法
属性特点 只能是 public static final 常量 可包含普通属性
设计目的 定义行为规范(“能做什么”) 定义领域模型的公共部分(“是什么”)
总结
接口是Java中“约定大于实现”的体现,通过分离规范与实现,提升代码的可扩展性和可维护性。实际开发中,常利用接口实现插件化设计、框架扩展(如Spring框架的接口注入)等场景,是面向对象设计的核心概念之一。
2765

被折叠的 条评论
为什么被折叠?



