当前位置: 首页 > news >正文

java中接口类的知识点介绍

Java 接口知识点介绍

在 Java 中,接口(Interface) 是一种抽象类型,用于定义一组方法的规范(方法签名),不包含方法的具体实现(Java 8 及以后支持默认方法和静态方法的实现),核心作用是实现多态和解耦,同时解决 Java 单继承的局限。

一、接口的定义

使用 interface 关键字定义接口,语法格式如下:
[访问修饰符] interface 接口名 {
// 1. 常量:默认被 public static final 修饰
数据类型 常量名 = 常量值;

// 2. 抽象方法:默认被 public abstract 修饰(Java 7及以前)
返回值类型 方法名(参数列表);

// 3. 默认方法(Java 8+):用 default 修饰,可带方法体
default 返回值类型 方法名(参数列表) {
方法体;
}

// 4. 静态方法(Java 8+):用 static 修饰,可带方法体
static 返回值类型 方法名(参数列表) {
方法体;
}
}
示例:
public interface Flyable {
// 常量
int MAX_HEIGHT = 1000;

// 抽象方法
void fly();

// 默认方法
default void stop() {
System.out.println("停止飞行");
}

// 静态方法
static void showInfo() {
System.out.println("这是一个飞行接口");
}
}
二、接口的实现

类通过 implements 关键字实现接口,必须重写接口中所有的抽象方法;如果实现类是抽象类,则可以不重写。一个类可以实现多个接口,以此实现类似“多继承”的效果。

1. 单接口实现

语法:
public class 类名 implements 接口名 {
// 重写接口的抽象方法
@Override
public 返回值类型 方法名(参数列表) {
方法体;
}
}
示例:
public class Bird implements Flyable {
@Override
public void fly() {
System.out.println("小鸟扇动翅膀飞行");
}
}
2. 多接口实现

语法:
public class 类名 implements 接口1, 接口2, ... {
// 重写所有接口的抽象方法
}
示例:
// 定义第二个接口
public interface Swimmable {
void swim();
}

// 实现两个接口
public class Duck implements Flyable, Swimmable {
@Override
public void fly() {
System.out.println("鸭子低空飞行");
}

@Override
public void swim() {
System.out.println("鸭子在水里游泳");
}
}
三、接口的核心特性

1. 抽象性:接口本身是抽象的,不能实例化(不能用 new 创建对象),只能通过实现类的对象来调用方法。

2. 成员默认修饰符

◦ 成员变量:默认 public static final,必须显式赋值,且赋值后不可修改。

◦ 抽象方法:默认 public abstract,无需手动添加修饰符。

◦ 默认方法和静态方法:默认 public(静态方法不能被重写,默认方法可以被重写)。

3. 多实现:一个类可以实现多个接口,弥补了 Java 类单继承的不足。

4. 接口继承接口:接口可以通过 extends 关键字继承多个接口,实现接口的拓展。
public interface AnimalBehavior extends Flyable, Swimmable {
void run();
}
四、Java 8 接口新特性(默认方法、静态方法)

1. 默认方法

• 作用:为接口新增方法时,不强制所有实现类重写,避免破坏原有代码。

• 调用:可通过实现类对象直接调用,也可被实现类重写。
// 重写默认方法
public class Plane implements Flyable {
@Override
public void fly() {
System.out.println("飞机靠引擎飞行");
}

@Override
public void stop() {
System.out.println("飞机降落后滑行停止");
}
}

http://www.jsqmd.com/news/145712/

相关文章:

  • ESP32教程之Wi-Fi UDP通信从零实现
  • PaddlePaddle镜像中的梯度裁剪(Clip Gradient)阈值设定建议
  • ESP32-CAM图传过程中内存溢出问题的根源与解决指南
  • 继电器模块电路图设计:Arduino兼容版完整指南
  • 解决USB-Serial Controller找不到驱动:基于CH340芯片的实战案例
  • ViGEmBus虚拟手柄驱动:游戏控制器兼容性终极解决方案
  • PaddleOCR性能优化秘籍:GPU加速让文本识别快如闪电
  • PaddleNLP大模型实战:中文情感分析如何节省Token消耗?
  • 小红书链接解析技术解析与应用实践
  • PaddlePaddle镜像能否运行BEiT做图像掩码重建?
  • PaddlePaddle镜像中的位置前馈网络(Position-wise FFN)优化
  • 小红书素材保存难题的智能解决方案:XHS-Downloader深度使用指南
  • Mermaid.js图表绘制终极指南:从入门到精通的完整可视化解决方案
  • E7Helper如何通过五大智能模块彻底改变第七史诗的游戏体验?
  • esp32开发环境搭建实战案例:基于Arduino IDE的手把手教学
  • PaddlePaddle镜像如何实现模型灰度切换?双版本并行运行
  • 终极音乐格式转换指南:3步解锁任何加密音频
  • TTL电路搭建半加器实验:操作指南完整版
  • ESP32开发入门实践:点亮LED的完整示例
  • # ret2csu及栈迁移的运用
  • PaddlePaddle数据增强技巧:提升CV任务泛化能力
  • 树莓派4b新手避坑指南:安装与启动注意事项
  • 使用PaddlePaddle镜像降低AI开发门槛:新手也能快速上手
  • PaddlePaddle镜像如何实现模型灰度发布日志追踪?
  • 图解说明ESP-IDF Wi-Fi协议栈架构设计
  • PaddleNLP中文处理利器:大模型Token成本优化实战
  • PaddlePaddle与TensorFlow对比:谁更适合中文AI场景?
  • Zotero-SciPDF完全攻略:智能获取学术文献的终极解决方案
  • 一张卡片,日均裂变500+条点评与短视频!长治商家如何借「碰磁猫」实现全域爆单?
  • Mermaid状态图7天速成:从零掌握状态转换可视化核心技巧