Java面向对象——7.接口
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)和默认方法
- 支持多实现,解决单继承限制
- 接口间可继承,形成功能体系
Java面向对象——7.接口的更多相关文章
- Java面向对象:接口
Java面向对象之接口 什么是接口:接口是一种规范和标准,他们可以约束类的行为,是一些方法特征的集合 语法: [修饰符] interface 接口名 extends 父接口1,夫接口2....... ...
- JavaSE入门学习21:Java面向对象之接口(interface)(二)
一接口实现的多态 在上一篇博文:JavaSE入门学习20:Java面向对象之接口(interface)(一)中提到了接口的实现存在多态性,那么 这一篇主要就要分析接口实现的多态. 实例一 Test.j ...
- JavaSE入门学习20:Java面向对象之接口(interface)(一)
一Java接口 接口(英文:interface)是抽象方法和常量值的集合,在Java编程语言中是一个抽象类型,接口通常以interface来声 明.类是一种详细实现体.而接口定义了某一批类所须要遵守的 ...
- Java 面向对象之接口、多态
01接口的概念 A:接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成 ...
- Java面向对象(接口、多态)
面向对象 今日内容介绍 u 接口 u 多态 第1章 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的 ...
- Java面向对象程序设计--接口和内部类
1.接口的定义: In the Java programming language, an interface is not a class but staff[0] = ...
- java面向对象_接口
java接口 interface,是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类,编写接口的方式和类很相似,但 ...
- Java面向对象之接口interface 入门实例
一.基础概念 (一)接口可以简单的理解为,是一个特殊的抽象类,该抽象类中的方法都是抽象的. 接口中的成员有两种:1.全局常量 2.抽象方法 定义接口用关键字interface,接口中的成员都用固定的修 ...
- Java 面向对象_接口
接口定义 接口就是多个类的公共规范 接口是一种引用数据类型, 最重要的内容是其中的抽象方法 定义格式: public interface MyInterfaceAbstract { // 这是一个抽象 ...
- Java面向对象(二) 接口、多态和泛型
一.接口 二.多态 多态是同一个行为具有多个不同表现形式或形态的能力. 2.1 类型转换 转换方式 隐式 向上转型 对于基本数据类型,存储容量低的可自动向存储容量高的类型转换 对于引用变量,子类可被转 ...
随机推荐
- 通用jar包部署脚本
在<Linux下部署Spring Boot 项目 jar包>中,小编介绍了一步一步发布jar包的方法,这里提供一个通用Shell脚本,傻瓜式发布Spring Boot项目. 通过W ...
- 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 ...
- 洛谷P2024 [NOI2001]食物链 种类并查集
洛谷P2024 [NOI2001]食物链 题目描述 见食物链 - 洛谷 \(n\le5*10^4\) \(k\le10^5\) Recollection 初中的时候想了一个假掉了的算法想了很久. 刚刚 ...
- Informer架构以及简单使用
Informer架构以及简单使用 介绍 我们知道可以使用 Clientset 来获取所有的原生资源对象,那么如果我们想要去一直获取集群的资源对象数据呢?岂不是需要用一个轮询去不断执行 List() 操 ...
- 从理解AI到驾驭文字:一位技术爱好者的写作工具探索手记
三年前,当我第一次接触AI写作工具时,它生成的文字还带着明显的机械感,段落间的逻辑时断时续.如今,这些系统已经能写出颇具文采的散文,甚至模仿特定作家的风格.这种进化轨迹恰好为学习者提供了一个观察AI发 ...
- WEB DYNPRO程序找文本
ABAP里代码扫描就是用的SOURCE SCAN. WEB DYNPRO里有个单独的 事务代码SE24进入,执行类CL_WDY_WB_NAMING_SERVICE的方法GET_CLASSNAME_FO ...
- js代码修改react框架的input的值-2025年6月
需求,在1688商家工作台中的发布助手页面中,设置了模版依旧会有些输入框内容要自己填写,太麻烦了. 比如下面中的可售数量 想着自己写了个脚本方便自己填充数据. 试着尝试直接修改input标签的valu ...
- 巧用指标平台DataIndex,五步法轻松实现指标管理
开发部门在做指标加工的全流程中,是否经常出现如下问题: · 业务部门看指标数据的时候,看到两个名称相似的指标,不清楚两个指标的差异性,来咨询开发部门指标计算口径,开发部门配合业务部门翻找代码,找出指标 ...
- 尚硅谷SpringMVC学习笔记第10-13节(文件上传和下载、拦截器、异常处理器、注解配置SpringMVC)
转载于https://blog.csdn.net/weixin_57341232/article/details/126423746
- C/C++读取地震切片数据
SliceData IO 本文档将介绍文本格式文件的读写,常见的文本资料主要有: 层位(.txt) 切片(.txt) 测井(.las..txt) 断层(.txt)等.这些资料实质上均为表格(Table ...