java 中接口定义和使用
·
在 Java 中,接口(Interface)是一种抽象类型,用于定义类的行为规范(仅声明方法,不提供具体实现),主要作用是实现多态、解耦代码以及弥补类单继承的局限性。以下是接口的定义和使用方式的详细说明:
一、接口的定义
使用 interface 关键字定义接口,语法结构如下:
[修饰符] interface 接口名 [extends 父接口列表] {
// 1. 常量(默认被 public static final 修饰,必须初始化)
数据类型 常量名 = 初始值;
// 2. 抽象方法(默认被 public abstract 修饰,无方法体)
返回值类型 方法名(参数列表);
// 3. 默认方法(JDK8+,用 default 修饰,有方法体,实现类可直接使用或重写)
default 返回值类型 方法名(参数列表) {
// 方法实现
}
// 4. 静态方法(JDK8+,用 static 修饰,有方法体,属于接口本身)
static 返回值类型 方法名(参数列表) {
// 方法实现
}
// 5. 私有方法(JDK9+,用 private 修饰,有方法体,仅接口内部调用)
private 返回值类型 方法名(参数列表) {
// 方法实现
}
}
注意:
- 接口不能被实例化(无法用
new创建对象)。 - 接口的访问修饰符只能是
public或默认(包内可见)。 - 接口可以继承多个父接口(用
extends关键字,逗号分隔),但类只能单继承。
二、接口的使用(类实现接口)
类通过 implements 关键字实现接口,必须重写接口中所有的抽象方法(除非该类是抽象类)。
语法:
[修饰符] class 类名 [extends 父类] implements 接口1, 接口2, ... {
// 重写所有接口的抽象方法
@Override
方法实现...
}
三、完整示例
以下示例通过 “支付场景” 演示接口的定义与使用:
1. 定义接口(支付规范)
// 支付接口:定义支付行为的规范
interface Payable {
// 常量:支付类型标识
String ONLINE_PAY = "在线支付";
String OFFLINE_PAY = "线下支付";
// 抽象方法:必须被实现类重写
boolean pay(double amount); // 执行支付
String getPaymentInfo(); // 获取支付信息
// 默认方法:提供通用实现(如日志记录)
default void logPayment(double amount) {
System.out.println("记录支付金额:" + amount + "元");
}
// 静态方法:接口工具方法(如校验金额)
static boolean validateAmount(double amount) {
return amount > 0;
}
}
2. 实现接口(具体支付方式)
// 支付宝实现支付接口
class Alipay implements Payable {
@Override
public boolean pay(double amount) {
if (!Payable.validateAmount(amount)) { // 调用接口静态方法
return false;
}
logPayment(amount); // 调用接口默认方法
System.out.println("支付宝支付成功");
return true;
}
@Override
public String getPaymentInfo() {
return "支付方式:支付宝(" + ONLINE_PAY + ")"; // 使用接口常量
}
}
// 微信支付实现支付接口
class WechatPay implements Payable {
@Override
public boolean pay(double amount) {
if (!Payable.validateAmount(amount)) {
return false;
}
logPayment(amount);
System.out.println("微信支付成功");
return true;
}
@Override
public String getPaymentInfo() {
return "支付方式:微信支付(" + ONLINE_PAY + ")";
}
}
3. 测试接口的使用
public class InterfaceTest {
public static void main(String[] args) {
// 接口多态:接口引用指向实现类对象
Payable alipay = new Alipay();
Payable wechat = new WechatPay();
// 调用实现类的方法(统一通过接口调用)
alipay.pay(100.5);
System.out.println(alipay.getPaymentInfo());
wechat.pay(200);
System.out.println(wechat.getPaymentInfo());
// 调用接口静态方法
System.out.println("金额是否有效:" + Payable.validateAmount(-50)); // false
}
}
运行结果:
记录支付金额:100.5元
支付宝支付成功
支付方式:支付宝(在线支付)
记录支付金额:200.0元
微信支付成功
支付方式:微信支付(在线支付)
金额是否有效:false
更多推荐


所有评论(0)