Java面向对象——7.接口

世界杯男子

目录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)和默认方法

支持多实现,解决单继承限制

接口间可继承,形成功能体系