【Java】基础入门(十五)--- 接口

news/2024/10/25 7:24:06/

Java接口

定义

在现实生活中,接口是某些企业和组织指定的一种约定或标准,规定了接口的大小、形状等,按照该约定设计各种设备。

java中的接口作用和生活类似,它提供一种约定,使实现接口的类在形式上保持一致。

描述规范的数据类型,接口中只定义规范(不需要实现)

抽象类中可以有普通方法而接口中的方法默认都是抽象类,也可以说接口是一种特殊的抽象类接口不能被实例化,而且没有构造方法

定义接口

格式:

public interface 接口名{//接口成员
}

举例

public interface USBInterface{public static final String NAME = "";//静态常量public void service();
}
  • 接口中的方法默认都是抽象方法,所以可以省略abstarct修饰符

  • 接口中的方法默认都是public修饰的,所以可以省略public

  • 接口中的变量只能是静态常量(static final),所以可以省略static final,静态常量在定义时就要赋值,且无法改变。

  • 接口不能被实例化, 没有构造方法。

使用接口

接口的使用和抽象类一样,都是通过子类。子类通过implements关键字实现接口,实现接口就必须实现接口中的抽象方法

public 类名 implements 接口名{实现方法普通方法属性
}

举例

public class USBDisk implements USBInterface{@Overridepublic void service() {System.out.println("service()");}
}
  • 一个类可以实现多个接口,接口之间使用,隔开
  • 接口的实现类中,可以有普通方法
  • 实现方法必须是public

实现多个接口

java 中继承是单继承,使用extends关键字;但是一个类可以实现多个接口,使用imple ments,多个接口之间用, 隔开。

接口可以多继承, 一个接口可以继承多个接口

[修饰符] interface 接口名 extends 父接口1, 父接口2,...{常量定义方法定义
}

举例

public class Computer implements USBInterface, ChargeInterface{public void play() {System.out.println("play game");}@Overridepublic void charge() {System.out.println("充电");}@Overridepublic void service() {System.out.println("USB接口");}
}

一个类可以同时继承和实现接口,extends要在implements之前。

public class LenovoComputer extends Computer implements USBInterface,ChargeInterface{}

接口与接口之间是继承关系,使用extends关键字。多个接口使用,隔开

public interface USBC extends USBInterface,ChargeInterface{}

抽象类和接口类的区别

特性接口抽象类
组合可以在新类中组合多个接口只能继承一个抽象类
状态不能包含字段(静态字段除外,但不支持实例字段)可以包含字段
默认方法和抽象方法默认方法不需要在子类里实现,它只能引用接口中的方法抽象方法必须在子类里实现
构造器不能有构造器有构造器
访问修饰符默认public可以用protected和包访问修饰符

抽象类仍然是一个类,因此如果被创建的新类所继承,则该抽象类就应该是唯一被继承的
类。在创建新类的过程中可以实现多个接口。

在合理的范围内尽可能抽象


http://www.ppmy.cn/news/1076029.html

相关文章

ELK安装、部署、调试(五)filebeat的安装与配置

1.介绍 logstash 也可以收集日志,但是数据量大时太消耗系统新能。而filebeat是轻量级的,占用系统资源极少。 Filebeat 由两个主要组件组成:harvester 和 prospector。 采集器 harvester 的主要职责是读取单个文件的内容。读取每个文件&…

利用条件竞争突破优惠券仅能使用一次逻辑限制

Portswigger练兵场之条件竞争 目录 Portswigger练兵场之条件竞争🦄条件竞争-突破一次逻辑限制🚀实验前置必要知识点🏆实验要求⚡️渗透开始1. 站点分析2. 登录3.日志探查4.功能点探究5.完成实验 修复方案 🦄条件竞争-突破一次逻辑…

Android 热修复核心原理

dexopt 在Dalvik中虚拟机在加载一个dex文件时,对 dex 文件 进行 验证 和 优化的操作,其对 dex 文件的优化结果变成了 odex(Optimized dex) 文件,这个文件和 dex 文件很像,只是使用了一些优化操作码。 dex2oat ART 预先编译机制&a…

Vue3 ElementPlus el-cascader级联选择器动态加载数据

参考了这位的大佬的写法 element el-cascader动态加载数据 &#xff08;多级联动&#xff0c;落地实现&#xff09;_el-cascader 动态加载_林邵晨的博客-CSDN博客 <el-cascader style"width: 300px" :props"address" v-model"addressValue" …

xxl-job快速使用

目录 官方文档 具体操作一下 为什么从github上拉取项目后这些包的颜色都没有变呢?

vue训练场练习props和$emit,实现大写输入,小写输出。

场景&#xff1a; 在vue官网训练场&#xff0c;使用训练场中的组件。 仅作为练习笔记&#xff0c;仅供产考。 App.vue 组件代码 方式一&#xff1a;Watch监听 方式二&#xff1a;input绑定

ABB PCD231B101励磁控制模块

电磁励磁控制&#xff1a; PCD231B101 模块专门设计用于电磁励磁设备的控制&#xff0c;以确保发电机的励磁电流和电压维持在合适的水平。 多通道控制&#xff1a; 这种模块通常具有多个控制通道&#xff0c;可用于同时监测和控制多台电力发电机。 通讯接口&#xff1a; PCD2…

python注释

任何编程语言都少不了注释&#xff0c;Python也不例外&#xff0c;以下是Python注释的具体用法&#xff1a; 单行注释 Python编程语言的单行注释常以#开头&#xff0c;单行注释可以作为单独的一行放在被注释代码行之上&#xff0c;也可以放在语句或者表达式之后。 实例&…