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

Java的接口

一、接口的概念

1.接口:是一种标准,接口的实现者和使用者都必须遵循的约定。抽类是一种特殊的类,而接口是

一种特殊的抽象类。虽然接口不叫类,但是接口在使用中的很多性质和类之间的继承关系相似。


2.Java 语言中的接口也有同样的含义。接口是一套标准,用来规范实现该接口的所有类的特征和

行为。接口比抽象类更纯粹,抽象类中成员变量的值可以被修改,也可以不被修改,而接口中只能

定义常量,并且必须对该常量赋初值,且不能被修改;抽象类中可以定义抽象方法,也可以定义普

通方法,但是接口中定义的方法必须全是抽象方法。


3.接口的基本语法:

[修饰符] interface  接口名 [extends 父接口列表]{

[常量声明;]

[抽象方法声明;]

}

①关键字:interface

② 所有的属性都是公开、静态、常量

③所有的方法都是公开、抽象方法

④没有构造方法,不能参与创建对象的过程,可以声明引用

⑤ 修饰符通常是访问权限修饰符,可以有两种:publie 和默认。如果接口是用 public修饰时,则源

文件的名字必须和接口名一致,而且一个源文件中最多只能定义一个 public接口。

③ extends 父接口列表可选项,父接口和父接口间用逗号分隔。

④ 接口中可以为空,但是有成员时,该成员必须是常量或抽象方法。


4、①创建接口

        创建接口的步骤和创建类类似,首先选择项目名称,之后右击,在弹出的快捷菜单中选项

        New选项,再选择 interface选项,然后填写接口名,选择访间权限修饰符及父接口,最后  

        单击“ 完成”按钮完成接口的创建。

      ② 接口中的常量

        接口中定义的变量前默认有3个修饰符public、static 和final。因为有final 修饰符,所以该变量

        在声明时必须赋初值,并且在程序运行中不容许改变变量的值,该变量也被称为常量。

      ③接口中的方法

         接口中定义的方法默认有 public、abstract 两个修饰符

         接口中的常量和方法前,默认修饰符可以定义,也可以不定义。当修饰符未定义时,系

         统会自动按要求添加。


二、类与接口的实现

类和接口之间是实现关系,用implements 关键字表示。实现关系是变相的继承关系,满足继承

关系的所有规则,因此接口可以作为特殊的父类出现。

实现关系的规则如下:

  [修饰符]   子类[extends 父类][implements  接口列表]{

                       类体;

     }

说明:类之间是单继承关系,extends 父类部分是可选项,如果没有该选项时,默认继承自 Object

类。

     子类从父类中如果无法获得某种功能,可以通过实现接口的实现让类中具有该种功能,实现关

系为类功能的拓展提供了一种灵活的方式。接口中的方法都是抽象方法,当类实现接口时,需要对

接口中的抽象方法进行方法实现(方法重写),否则这个类就必须定义成抽象类,抽象类不能实例

化。


三、访问接口常量

接口中定义的变量,因为系统会默认添加 public、static和 final 3 个修饰符,也被认为是常量。

接口中的常量访问方式有3种,分别是:

① 接口名.常量。

② 类名.常量(类和接口之间必须有实现关系)。

③ 对象名.常量


四、接口与接口的关系

1.接口和接口之间是多继承关系,即一个子接口可以有多个父接口,当子接口继承父接口时,会自

   动继承父接口中所有的常量和抽象方法。接口之间的关系规则定义如下:

    [修饰符]interface 子接口 [extends 父接口列表]{ }


五、小结

1.继承(extends)

①单继承:类与类之间

②多继承:接口与接口之间

2.实现(implements)

①多实现:类与接口之间

②先继承后实现:类名  extends 类名 implements  接口1,接口2{}

3.


六、代码

1.

package demo;
public class Test1{public static void main(String[] args){System.out.println(MyInter.a);System.out.println(MyInter.b);MyInter mi=new MyClass();mi.ma();mi.mb();}
}
//接口 父类型
interface MyInter{public static final int a=5;//公开静态常量int b=90;//默认被public static final int修饰public abstract void ma();void mb();
}//实现类 子类型
class MyClass implements MyInter{public void ma(){System.out.println("ma....");}public void mb(){System.out.println("mb....");}
}

2.

package demo;
public class Test2{public static void main(String[] args){}
}interface IA{void ma();
}interface IB{void mb();	
}//接口与接口之间 为 多继承
interface IC extends IA,IB{void mc();
}interface ID{void md();	
}//类可以同时实现多个接口;多实现
class MyClass implements ID,IC {public void md(){}public void mc(){}public void ma(){}public void mb(){}}class ClassA{public void me(){}
}

http://www.xdnf.cn/news/14302.html

相关文章:

  • SKUA-GOCAD入门教程-第八节 线的创建与编辑4
  • Milvus/ES 插入方案对比
  • K8s 容器化安全产品性能问题排查指南
  • web3方法详解
  • 【Java】网络编程基础与聊天室架构分析
  • HTML 从入门到起飞 · 系列合集:一站式学习不掉线
  • 构建多智能体(AI Agent)的高效协作平台——CrewAI探索
  • 基于CNN深度学习的小程序识别2-视频介绍下自取
  • 超子说物联网-MQTT_笔记1---通过EMQX搭建MQTT服务器
  • springboot项目启动报错:spring boot application in default package
  • React条件渲染之逻辑与和逻辑或详解
  • 第19篇:数据库中间件中的 SQL 分析与审计机制设计
  • 嵌入式硬件篇---常见电平标准
  • 【MPC】模型预测控制笔记 (3):无约束输出反馈MPC
  • flutter 项目配置Gradle下载代理
  • 以太网交换机交换表的建立
  • 使用VSCode开发FastAPI指南(二)
  • Kubernetes (K8S) 系统学习规划
  • 分布式数据库中间件-Sharding-JDBC
  • 性能优化 - 高级进阶: Spring Boot服务性能优化
  • C#设计模式之AbstractFactory_抽象工厂_对象创建新模式-学习
  • leetcode23-合并K个升序链表
  • Docker + PyFlink1.17 数据写入 MySQL
  • 技术选型指南:如何选择更适合项目的开源语言及其生态系统
  • ESP32 005 MicroPython I2S 实现音频传输与播放
  • 【数据可视化】Pyecharts-家乡地图
  • 从0开始学习语言模型--Day02-如何最大化利用硬件
  • Python OpenCV 4.10 库详解
  • 中科院医学1区Top:解放军医学院利用多组学+网络药理学+转录组测序联合解析苗药七角生白胶囊抗白细胞减少症的分子机制
  • AORSA编译指南