Java接口(Interface)

在Java面向对象编程中,接口(Interface)是一种比抽象类更纯粹的抽象结构,它专注于定义方法规范而不涉及具体实现。

接口的概念与定义

接口是用interface关键字声明的引用类型,它主要包含方法签名(抽象方法),不能包含实例字段。接口的核心作用是定义"必须做什么",而不是"如何做"。

简单示例:定义一个"可移动"接口

// 定义接口
interface Movable {
// 抽象方法:所有可移动对象必须实现移动功能
void move(); // 默认方法:提供通用的停止功能
default void stop() {
System.out.println("停止移动");
}
}

接口的特性

  1. 纯抽象规范

    接口中的抽象方法默认是public abstract的,无需显式声明。这些方法没有方法体,必须由实现类提供具体实现:

    // 实现接口
    class Car implements Movable {
    @Override
    public void move() {
    System.out.println("汽车在行驶");
    }
    } class Bird implements Movable {
    @Override
    public void move() {
    System.out.println("鸟儿在飞翔");
    }
    }
  2. 多实现机制

    Java中类只能单继承,但一个类可以同时实现多个接口,解决了单继承的局限性:

    // 定义另一个接口
    interface Flyable {
    void fly();
    } // 实现两个接口
    class Plane implements Movable, Flyable {
    @Override
    public void move() {
    System.out.println("飞机在移动");
    } @Override
    public void fly() {
    System.out.println("飞机在飞行");
    }
    }
  3. 接口继承

    接口之间可以通过extends关键字继承,形成接口体系:

    // 子接口继承父接口
    interface Vehicle extends Movable {
    void refuel(); // 新增抽象方法
    } // 实现子接口需要实现所有抽象方法(包括继承的)
    class Truck implements Vehicle {
    @Override
    public void move() { ... } @Override
    public void refuel() { ... }
    }
  4. 默认方法(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)和默认方法
  • 支持多实现,解决单继承限制
  • 接口间可继承,形成功能体系

Java面向对象——7.接口的更多相关文章

  1. Java面向对象:接口

    Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...

  2. JavaSE入门学习21:Java面向对象之接口(interface)(二)

    一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...

  3. JavaSE入门学习20:Java面向对象之接口(interface)(一)

    一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种详细实现体.而接口定义了某一批类所须要遵守的 ...

  4. Java 面向对象之接口、多态

    01接口的概念 A:接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成 ...

  5. Java面向对象(接口、多态)

    面向对象 今日内容介绍 u 接口 u 多态 第1章 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的 ...

  6. Java面向对象程序设计--接口和内部类

    1.接口的定义: In the Java programming language, an interface is not a class but          staff[0] =       ...

  7. java面向对象_接口

    java接口 interface,是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口的方式和类很相似,但 ...

  8. Java面向对象之接口interface 入门实例

    一.基础概念 (一)接口可以简单的理解为,是一个特殊的抽象类,该抽象类中的方法都是抽象的. 接口中的成员有两种:1.全局常量 2.抽象方法 定义接口用关键字interface,接口中的成员都用固定的修 ...

  9. Java 面向对象_接口

    接口定义 接口就是多个类的公共规范 接口是一种引用数据类型, 最重要的内容是其中的抽象方法 定义格式: public interface MyInterfaceAbstract { // 这是一个抽象 ...

  10. Java面向对象(二) 接口、多态和泛型

    一.接口 二.多态 多态是同一个行为具有多个不同表现形式或形态的能力. 2.1 类型转换 转换方式 隐式 向上转型 对于基本数据类型,存储容量低的可自动向存储容量高的类型转换 对于引用变量,子类可被转 ...

随机推荐

  1. 通用jar包部署脚本

      在<Linux下部署Spring Boot 项目 jar包>中,小编介绍了一步一步发布jar包的方法,这里提供一个通用Shell脚本,傻瓜式发布Spring Boot项目.   通过W ...

  2. Target JRE version (1.8.0_201) does not match project JDK version (java version "1.7"), will use sources from JDK: 1.8

    问题描述:IntelliJ IDEA 启动项目时,常常提示Target JRE version (1.8.0_201) does not match project JDK version (java ...

  3. 洛谷P2024 [NOI2001]食物链 种类并查集

    洛谷P2024 [NOI2001]食物链 题目描述 见食物链 - 洛谷 \(n\le5*10^4\) \(k\le10^5\) Recollection 初中的时候想了一个假掉了的算法想了很久. 刚刚 ...

  4. Informer架构以及简单使用

    Informer架构以及简单使用 介绍 我们知道可以使用 Clientset 来获取所有的原生资源对象,那么如果我们想要去一直获取集群的资源对象数据呢?岂不是需要用一个轮询去不断执行 List() 操 ...

  5. 从理解AI到驾驭文字:一位技术爱好者的写作工具探索手记

    三年前,当我第一次接触AI写作工具时,它生成的文字还带着明显的机械感,段落间的逻辑时断时续.如今,这些系统已经能写出颇具文采的散文,甚至模仿特定作家的风格.这种进化轨迹恰好为学习者提供了一个观察AI发 ...

  6. WEB DYNPRO程序找文本

    ABAP里代码扫描就是用的SOURCE SCAN. WEB DYNPRO里有个单独的 事务代码SE24进入,执行类CL_WDY_WB_NAMING_SERVICE的方法GET_CLASSNAME_FO ...

  7. js代码修改react框架的input的值-2025年6月

    需求,在1688商家工作台中的发布助手页面中,设置了模版依旧会有些输入框内容要自己填写,太麻烦了. 比如下面中的可售数量 想着自己写了个脚本方便自己填充数据. 试着尝试直接修改input标签的valu ...

  8. 巧用指标平台DataIndex,五步法轻松实现指标管理

    开发部门在做指标加工的全流程中,是否经常出现如下问题: · 业务部门看指标数据的时候,看到两个名称相似的指标,不清楚两个指标的差异性,来咨询开发部门指标计算口径,开发部门配合业务部门翻找代码,找出指标 ...

  9. 尚硅谷SpringMVC学习笔记第10-13节(文件上传和下载、拦截器、异常处理器、注解配置SpringMVC)

    转载于https://blog.csdn.net/weixin_57341232/article/details/126423746

  10. C/C++读取地震切片数据

    SliceData IO 本文档将介绍文本格式文件的读写,常见的文本资料主要有: 层位(.txt) 切片(.txt) 测井(.las..txt) 断层(.txt)等.这些资料实质上均为表格(Table ...