目录Java接口(Interface)接口的概念与定义简单示例:定义一个"可移动"接口接口的特性接口与抽象类的对比总结 Java接口(Interface) 在Java面向对……
目录Java接口(Interface)接口的概念与定义简单示例:定义一个"可移动"接口接口的特性接口与抽象类的对比总结
Java接口(Interface)
在Java面向对象编程中,接口(Interface)是一种比抽象类更纯粹的抽象结构,它专注于定义方法规范而不涉及具体实现。
接口的概念与定义
接口是用interface关键字声明的引用类型,它主要包含方法签名(抽象方法),不能包含实例字段。接口的核心作用是定义"必须做什么",而不是"如何做"。
简单示例:定义一个"可移动"接口
// 定义接口
interface Movable {
// 抽象方法:所有可移动对象必须实现移动功能
void move();
// 默认方法:提供通用的停止功能
default void stop() {
System.out.println("停止移动");
}
}
接口的特性
纯抽象规范
接口中的抽象方法默认是public abstract的,无需显式声明。这些方法没有方法体,必须由实现类提供具体实现:
// 实现接口
class Car implements Movable {
@Override
public void move() {
System.out.println("汽车在行驶");
}
}
class Bird implements Movable {
@Override
public void move() {
System.out.println("鸟儿在飞翔");
}
}
多实现机制
Java中类只能单继承,但一个类可以同时实现多个接口,解决了单继承的局限性:
// 定义另一个接口
interface Flyable {
void fly();
}
// 实现两个接口
class Plane implements Movable, Flyable {
@Override
public void move() {
System.out.println("飞机在移动");
}
@Override
public void fly() {
System.out.println("飞机在飞行");
}
}
接口继承
接口之间可以通过extends关键字继承,形成接口体系:
// 子接口继承父接口
interface Vehicle extends Movable {
void refuel(); // 新增抽象方法
}
// 实现子接口需要实现所有抽象方法(包括继承的)
class Truck implements Vehicle {
@Override
public void move() { ... }
@Override
public void refuel() { ... }
}
默认方法(Default Method)
JDK 1.8引入的默认方法允许在接口中提供方法实现,实现类可以直接使用或选择性覆写:
interface Greetable {
String getName();
// 默认方法
default void sayHello() {
System.out.println("你好,我是" + getName());
}
}
class User implements Greetable {
private String name;
public User(String name) {
this.name = name;
}
@Override
public String getName() {
return name;
}
// 可选:覆写默认方法
@Override
public void sayHello() {
System.out.println("Hello, I'm " + name);
}
}
接口与抽象类的对比
特性
接口(Interface)
抽象类(Abstract Class)
继承方式
一个类可实现多个接口
一个类只能继承一个抽象类
字段
不能有实例字段(可定义常量)
可以有实例字段
设计目的
定义类的行为规范
提供代码复用,包含部分实现
总结
理解Java接口的特点:
仅包含抽象方法(默认public abstract)和默认方法
支持多实现,解决单继承限制
接口间可继承,形成功能体系