什么是接口?
说到接口,USB大家肯定不陌生~
接口是一种标准、规范.
注意:接口一旦制定好,使用者和实现者都必须遵循的标准.
接口的语法: (JDK7.0)
(1) 关键字:interface
(2) 语法: interface 接口名{}
(3) 接口编译之后会生成对应的 .class文件
(4) 接口不能创建对象,但是可以声明引用 接口名 引用名;
(5) 接口中没有构造方法
(6) 接口中所有的属性都是公开的静态常量
(默认被:public static final)
(7) 接口中所有的方法都是公开抽象方法
(默认被:public abstract修饰)
注意:接口中的方法默认访问权限为public;
类中方法默认访问权限是 default
接口的实现类:
语法:
class 类名 implements 接口名{}
注意:实现的关键字为 implements
(1) 如果实现类不想成为抽象类,必须覆盖(实现)接口中所有的方法
(2) 实现类中覆盖接口中的方法时,访问权限必须是public
使用:
(1) 接口类型的引用中,只能存储对应实现类的对象,体现多态的应用
(2) 语法:
接口名 引用名 = new 实现类类名(实参);
注意:一个接口可以定义多个实现类
接口的继承性:(很重要哦~)
接口与接口之间为多继承的关系
(1) 一个接口可以同时继承多个父接口
(2) 语法:
interface 接口名 extends 父接口名1,父接口名2{}
类与接口之间为多实现的关系
(1) 一个类可以同时实现多个接口
(2) 语法:
class 类名 implements 接口名1,接口名2{}
(3) 一个类同时实现多个接口,不想成为抽象类,则需要实现所有接口中所有方法
(包括所实现接口的父接口中的方法)
一个类实现多个接口的同时还有可以继承一个类
(1) 如果一个类继承一个父类同时实现多个接口,必须先继承,再实现
(2) 语法:
class 类名 extends 父类名 implements 父接口1,父接口2{}
注意:必须先 extends ,再 implements
类与类之间存在:单继承------extends
类与接口之间存在:多实现------implements
接口与接口之间存在:多继承------extends
接口的影响:
1.由于接口之间为多继承的关系,同时类与接口之间是多实现的关系,所以让多态更加多元化和复杂
2.如果强制类型转换的双方只要有一方为接口类型,则编译一定通过,运行分以下两种情况:
a.如果转换的引用中存储的实际对象类型是要转换类型的一种,运行通过
b.如果转换的引用中存储的实际对象类型不是要转换的一种,编译通过,但是运行报错,错误信息:
Java.lang.ClassCastException(类型转换异常)
接口的语法: (JDK8.0)
(1) 默认方法:
a. public default 返回值类型 方法名(形参列表){
// 方法的实现部分
}
b. 注意:接口中方法被 default修饰代表,此方法允许带有方法实现部分
c. 默认方法访问权限 为 public
d. 默认方法允许被覆盖,但是覆盖时访问修饰符为 public
(2) 静态方法:
a. public static 返回值类型 方法名(形参列表){
// 方法的实现部分
}
b. 接口中静态方法访问权限是public
接口的语法: (JDK9.0)—(私有方法)
(1) 接口中从9.0开始,方法可以被 private修饰
(2) 语法:
private 返回值类型 方法名(形参列表){
// 方法的实现
}
(3) 私有方法供接口内部使用,通常将其他方法的共同逻辑部分提取,减少代码冗余
接口的分类
常量接口:
接口中只有属性、没有方法,应用很少
空接口:
通常称为标记接口,接口中没有任何属性和抽象;
例如:IO对象序列化时应用
函数式接口:
接口中有且只有一个抽象方法(静态和默认不关注),广泛应用在Lambda表达式中
抽象类和接口的区别? (要牢记哦~)
以上是Java版本间接口语法的差异和抽象类与接口的异同的详细内容。更多信息请关注PHP中文网其他相关文章!

本文讨论了使用Maven和Gradle进行Java项目管理,构建自动化和依赖性解决方案,以比较其方法和优化策略。

本文使用Maven和Gradle之类的工具讨论了具有适当的版本控制和依赖关系管理的自定义Java库(JAR文件)的创建和使用。

本文讨论了使用咖啡因和Guava缓存在Java中实施多层缓存以提高应用程序性能。它涵盖设置,集成和绩效优势,以及配置和驱逐政策管理最佳PRA

本文讨论了使用JPA进行对象相关映射,并具有高级功能,例如缓存和懒惰加载。它涵盖了设置,实体映射和优化性能的最佳实践,同时突出潜在的陷阱。[159个字符]

Java的类上载涉及使用带有引导,扩展程序和应用程序类负载器的分层系统加载,链接和初始化类。父代授权模型确保首先加载核心类别,从而影响自定义类LOA


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

WebStorm Mac版
好用的JavaScript开发工具

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。