Java接口的定义、使用及成员特点
接口的定义
用interface关键字,格式如下
public interface 接口名{}
接口的使用
1)接口不能实例化
2)类实现接口用implements关键字修饰
3)实现类需实现接口中所有的抽象方法,否则是抽象类
4)一个类可以实现多个接口
public class 类名 implements 接口1,接口2 {}
5)接口可以单继承,也可以多继承,即一个接口可以继承多个接口。如:
interface1 extends interface2, interface3 { }
当 classA implements interface1 时,除了实现interface1的抽象方法,还必须实现其父类interface2, interface3的所有抽象方法
接口中成员的特点
jdk7以前:接口只能定义抽象方法
jdk8开始:接口可以定义有方法体的方法(默认方法default修饰、静态方法static修饰)
jdk9开始:接口可以定义private修饰的私有方法
成员变量
默认修饰符是public static final,可以省略
构造方法
不存在,没有
成员方法
1、抽象方法
1)默认的修饰符是public abstract,可以省略
2)无方法体
2、默认方法
1)用default关键字修饰,有方法体
2)默认方法的定义格式如下,public可以省略
public default 返回值类型 方法名(参数列表) {}
3)默认方法不强制子类重写,若要重写,重写的时候去掉default关键字
4)一个类实现多个接口,多个接口存在相同的默认方法名,这种情况该类中必须重写默认方法
3、静态方法
1)用static修饰
2)静态方法的定义格式如下,public可以省略
public static 返回值类型 方法名(参数列表){}
3)静态方法只能用接口名调用,对象或类名不能调用
4、私有方法
1)private关键字修饰,分为默认私有方法和静态私有方法
2)默认私有方法定义
pricate 返回值类型 方法名(参数列表){}
3)静态私有方法定义
pricate static 返回值类型 方法名(参数列表){}
使用示例
接口A:
public interface InterfaceA {void aShow();default void show(){System.out.println("InterfaceA 的show方法");showG();}public default void showZ(){System.out.println("InterfaceA 的showZ方法");showG();}private void showG(){System.out.println("InterfaceA 的 private showG方法");}static void showA(){System.out.println("InterfaceA 的static showA方法");showD();}private static void showD(){System.out.println("InterfaceA 的private static showD方法");}
}
接口B:
public interface InterfaceB {default void show(){System.out.println("InterfaceB 的show方法");}
}
实现类:
public class ImpClassA implements InterfaceA,InterfaceB{@Overridepublic void aShow() {System.out.println("ImpClassA 对抽象方法 aShow 的重写" );}@Overridepublic void show() {System.out.println("ImpClassA show方法");}
}
测试类:
public class Test6 {public static void main(String[] args) {InterfaceA.showA(); //接口调用静态方法ImpClassA impClassA = new ImpClassA();impClassA.show(); //两个接口都有默认show方法,类需要进行重写impClassA.showZ(); //对象调用接口中的默认方法impClassA.aShow(); //实现接口中的抽象方法,对象进行调用}
}
运行结果:
InterfaceA 的static showA方法
InterfaceA 的private static showD方法
ImpClassA show方法
InterfaceA 的showZ方法
InterfaceA 的 private showG方法
ImpClassA 对抽象方法 aShow 的重写
Java接口的定义、使用及成员特点相关推荐
- java接口如何定义常量 c_在Java接口中怎样访问定义的常量呢?
java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能).那么我们在Java接口中怎 ...
- java定义常量语法错误的是_在Java接口中定义常量,下面语法错误的是( )_学小易找答案...
[单选题]Why did Ben's emotions change so much? [判断题]Write the title in the middle of the first line. [单 ...
- java接口如何定义常量 c_java接口定义常量研究
背景 和同事讨论到,在接口中定义常量的问题,引发了争论,即,假如在接口中定义变量,是否需要用static来限定的问题,或者说用static和不用static会有什么区别. 引论 package spr ...
- Java 接口的定义、接口的成语、接口的实现、接口与类的多继承、JDK1.8后新增方法、使用接口的注意事项
什么是接口? 接口是更加彻底的抽象,在JDK 1.8之前接口中只能是抽象方法和常量. 接口体现的是规范思想,实现接口的子类必须重写完接口的全部抽象方法. 接口的基本定义格式: 修饰符 interfac ...
- java 接口 属性_浅谈java接口中定义属性
package com.supan.reflact; public interface PersonObject { /** * 在接口中定义属性的知识点: * 1,属性默认的修饰词是:public ...
- java批量删除接口怎么定义_教你在Java接口中定义方法
基本上所有的Java教程都会告诉我们Java接口的方法都是public.abstract类型的,没有方法体的. 但是在JDK8里面,你是可以突破这个界限的哦. 假设我们现在有一个接口:TimeClie ...
- java中 关于静态方法的定义_为什么我们不能在Java接口中定义静态方法?
从Java 8开始,Java接口中允许使用静态方法. 从Java 8开始,接口也可以具有静态帮助器方法.public interface vehicle { default void print() ...
- Java接口的定义与实现
普通类:只有具体实现 抽象类:具体实现和规范(抽象方法)都有! 接口:只有规范 接口就是规范,定义的是一组规则,体现了现实世界中"如果你是..你必须能.."的思想,如果你是汽车你必 ...
- java接口能定义非抽象方法吗_接口中只能定义常量和抽象方法,对么
接口中只能定义常量和抽象方法,对.在Java语言中,接口是一个抽象类型,是抽象方法的集合,通常以关键字interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口中只能定义常量 ...
- java接口的定义及使用细节
接口的概念(菜鸟教程): 使用interface关键字定义一个接口. 接口的属性,默认会使用public static final隐式修饰,且只能用public修饰: 接口的方法,可以拥有抽象方法.静 ...
最新文章
- luogu P3379 【模板】最近公共祖先(LCA)
- post from open live writer
- swift 可变參数
- c mysql日期时间格式_mysql日期和时间类型
- Java 哪些事最困扰你?
- 漫步线性代数十七——正交基和格拉姆-施密特正交化(上)
- mysql sbr_腾讯云数据库团队:MySQL语句复制(SBR)的缺陷列举
- 位姿矩阵求逆 (搬运)
- A题:电流信号检测装置(本科)-- 2018年TI杯大学生电子设计竞赛
- 联想服务器改xp系统,联想win7改xp蓝屏怎么解决
- 腾讯云COS云存储入门(一)
- 计算机方面的缩写大全
- 一张纸的厚度为0.08mm,对折多少次能达到或超过珠穆朗玛峰的高度(8848.13米)
- 2022年最新春招作战表…
- 趣味Python——如何帮女朋友快速抢票
- 序列1 - 以太坊的诞生,史上最大ICO之一
- 电脑投屏到电视android,电脑怎么投屏到电视?看完这篇文章你就懂了
- python会搞坏电脑吗_VPython会破坏所有tkinter窗口
- 局域网限速工具幻境网盾使用教程
- 手动卸载删除ActiveX控件。
热门文章
- aardio获取数据乱码问题
- JQuery EasyUI 教程
- 鸿蒙系统手机电脑互传文件,【手机篇】巧借局域网,便捷实现手机电脑间的文件传输...
- 关于IDEA中使用git更新代码,会覆盖掉未提交的新代码解决问题
- 大数据工具七剑下天山之Flume (一)
- shell 多个引号冲突_Shell 引号嵌套
- 1072 开学寄语(20 分)
- tableau数据汇总/明细/分-总的行列展示— Lee桑的学习笔记
- 一文看尽 6篇 CVPR2021 伪装目标检测、旋转目标检测论文
- “大自然的印钞机”农夫山泉如何借数藏冲破自己的“天花板”?