【Java】Java接口 2022-04-16 04:00 598阅读 0赞 ### 文章目录 ### * 一.Java接口是什么 * 二、接口的定义 * 三、接口的实现 * 四 、接口的特点 * 五、什么时候使用接口和抽象类 * 六、接口的深度解析 # 一.Java接口是什么 # 接口在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。 Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。 链接:抽象类型、抽象方法 接口体现的是事物扩展的功能,在Java中,类定义了一个实体,包括实体的属性,实体的行为。而**接口定义了一个实体可能发生的动作,只有一个声明,没有具体的行为。** 当一个方法在很多类中有不同的体现是时候这个时候就可以将这个方法抽象出来做成一个接口。 **接口里面只能有不可修改的全局常量,只能有抽象的方法,接口没有构造方法。** [参考资料:Java接口的概念][Java] interface Inter { //全局常量前缀public static final public static final int i=10; //抽象方法使用abstract public abstract void eat(); } # 二、接口的定义 # 使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由**常量定义**和**方法定义**两部分组成。定义接口的基本格式如下: [修饰符] interface 接口名 [extends 父接口名列表]{ [public] [static] [final] 常量; [public] [abstract] 方法; } **修饰符**:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。 **接口名**:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。 **extends 父接口名列表**:可选参数,用于指定要定义的接口继承于哪个父接口。当使用extends关键字时,父接口名为必选参数。 **方法**:接口中的方法只有定义而没有被实现。 例如,定义一个用于计算的接口,在该接口中定义了一个常量PI和两个方法,具体代码如下: 1 public interface CalInterface 2 { 3 final float PI=3.14159f;//定义用于表示圆周率的常量PI 4 float getArea(float r);//定义一个用于计算面积的方法getArea() 5 float getCircumference(float r);//定义一个用于计算周长的方法getCircumference() 6 } 注意: 与Java的类文件一样,接口文件的文件名必须与接口名相同。 [参考资料:JAVA接口的定义与接口的实现][JAVA] # 三、接口的实现 # 接口在定义后,就可以在类中实现该接口。在类中实现接口可以使用关键字implements,其基本格式如下: [修饰符] class <类名> [extends 父类名] [implements 接口列表]{ } **修饰符**:可选参数,用于指定类的访问权限,可选值为public、abstract和final。 **类名**:必选参数,用于指定类的名称,类名必须是合法的Java标识符。一般情况下,要求首字母大写。 **extends 父类名**:可选参数,用于指定要定义的类继承于哪个父类。当使用extends关键字时,父类名为必选参数。 **implements 接口列表**:可选参数,用于指定该类实现的是哪些接口。当使用implements关键字时,接口列表为必选参数。当接口列表中存在多个接口名时,各个接口名之间使用逗号分隔。 在类中实现接口时,方法的名字、返回值类型、参数的个数及类型必须与接口中的**完全一致**,并且必须实现接口中的所有方法。 ```java interface A { public static final int i = 10; //接口只能定义全局常量需要加public static final如果不加系统默认给出,推荐加。 public abstract void eat(); } interface B extends A { // 接口可以继承接口 public abstract void sleep(); } interface C { public abstract void look(); } abstract class D { //定义一个抽象类 public void run() { System.out.println("跑起来"); } public abstract void learn(); } public class Text extends D implements B, C { //一个子类可以继承一个抽象类同时实现多个接口 //子类如果不是抽象类就必须实现所有的抽象方法 public void eat() { //实现接口A中的抽象方法 System.out.println("吃东西"); } public void look() { //实现接口C中的抽象方法 System.out.println("看风景"); } public void sleep() { //实现接口B中的抽象方法 System.out.println("睡懒觉"); } @Override public void learn() { //重写抽象类D中的抽象方法 System.out.println("学Java"); } public static void main(String[] args) { B b=new Text(); //多态,接口的引用指向子类的对象 b.eat(); b.sleep(); System.out.println(B.i); //静态常量通过接口名去访问,不推荐用对象去调用 C c=new Text(); c.look(); D d=new Text(); d.learn(); } } # 四 、接口的特点 # (1) 定义接口时使用interface定义,区别于抽象类,不需要加class。 (2) 接口不能被实例化,不能直接创建对象,因为接口里面只有抽象的方法,没有具体的功能。 (3) 接口可以继承接口,接口要实现具体的功能必须有实现他的子类,实现接口的子类中必须重写接口全部的抽象方法。 (4) 接口和接口之间可以多继承。 (5) 接口的子类可以是抽象类,但是没有实际的意义。 (6) 一个子类可以实现多个接口,通过implements关键字去实现。 (7) 接口需要通过多态才能创建对象。 # 五、什么时候使用接口和抽象类 # 抽象类是对事物本身的抽象,比如教师类,学生类就可以抽象为人类。 接口是对行为的抽象,比如教师要学英语,学生也要学英语,学英语就可以抽象为接口。 抽象类表示的是这个对象是什么,接口是表示这个对象能干什么。 所以抽象类只能有一个子类,就比如教师和学生只能是人类不能是非人类。 而教师或者学生可以实现多个接口。他们既可以学英语也可以学数学。 # 六、接口的深度解析 # 【接口与类的区别】 1. 接口不能用于实例化对象。 2. 接口没有构造方法。 3. 接口中所有的方法必须是抽象方法。 4. 接口不能包含成员变量,除了 static 和 final接口没有构造方法。 5. 接口不是被类继承了,而是要被类实现。 6. 接口支持多继承。接口支持多继承。 【接口与抽象类的区别】 1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行,接口中必须是抽象方法。 2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。 3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。 4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。 【抽象与类的相似点】 1. 一个接口也可以有多个方法。 2. 接口文件保存在 .java 结尾的文件中,文件名也必须使用接口名。 3. 接口的字节码文件保存在 .class 结尾的文件中。 4. 接口相应的字节码文件必须在与包名称相匹配的目录结构中。 [Java]: https://blog.csdn.net/liuchonghua/article/details/80013079 [JAVA]: https://blog.csdn.net/qq_37457202/article/details/80635994
相关 delphi 子接口是否实现父接口_java 集合Collection 子接口:List接口 set接口 queue 接口... 本号用来发布软件编程相关知识,欢迎关注。 ![fca833bd6167b94dd1d9972fa66368fc.png][] 概述 所有集合的顶级接口Collec 心已赠人/ 2023年01月03日 14:03/ 0 赞/ 249 阅读
相关 ④TypeScript 接口(属性接口、函数类型接口、可索引接口、类类型接口、接口扩展) TypeScript 属性接口 函数类型接口 可索引接口 类类型接口 接口扩展 -------------------- 写下博客主要用 小鱼儿/ 2022年12月19日 13:26/ 0 赞/ 302 阅读
相关 接口 接口是JAVA实现多继承的一种机制,一个类只能继承一个类,但是可以实现多个接口。 接口与一般类一样,也可以继承父类(接口),但是接口可以继承多个父接口。 p 系统管理员/ 2022年06月08日 07:41/ 0 赞/ 210 阅读
相关 java集合Collection接口、List接口、Set接口、Map接口、Iterator接口 1.对象的存储:①数组(基本数据类型 & 引用数据类型) ②集合(引用数据类型) >数组存储数据的弊端:长度一旦初始化以后,就不可变;真正给数组元素赋值的个数没 「爱情、让人受尽委屈。」/ 2022年05月17日 09:54/ 0 赞/ 365 阅读
相关 laravel接口 接口文档 接口 先在控制器里写一个接口的方法 之所以写了两个方法 因为写接口单独创建一个控制器比较好 避免与页面展示冲突 // 展示页面 配合城市接口执行 pu 太过爱你忘了你带给我的痛/ 2022年04月17日 01:59/ 0 赞/ 434 阅读
相关 Callable接口、Runable接口、FutureTask接口 1、Callable与Runable区别 Java从发布的第一个版本开始就可以很方便地编写多线程的应用程序,并在设计中引入异步处理。Thread类、Run Bertha 。/ 2022年02月25日 00:54/ 0 赞/ 441 阅读
相关 接口 java接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来 ╰半夏微凉°/ 2021年09月30日 10:00/ 0 赞/ 556 阅读
相关 接口 接口的基本概念 -------------------- Java接口是一系列方法的声明,是一些方法特征的集合。一个接口只有方法的特征没有方法的实现,因此这些方法可以 小灰灰/ 2021年09月22日 22:58/ 0 赞/ 656 阅读
相关 接口 接口 概念:可以理解为纯抽象的类。接口里的所有方法都是抽象方法,接口中没有具体实现的方法 关键字:interface关键字代替class关键字(即一种标签,表明此类为 谁践踏了优雅/ 2021年09月17日 01:36/ 0 赞/ 600 阅读
相关 接口 接口 interface 接口的定义:常量、抽象方法 常量:public static final 方法:public abstract Interface 蔚落/ 2021年09月10日 23:16/ 0 赞/ 691 阅读
还没有评论,来说两句吧...