接口的作用

article/2025/9/7 7:56:33

今日内容:接口概述、接口定义、接口的用法、接口的继承、接口和抽象类的区别

1.概述

接口定义了实现某种功能的规范,用来扩展类的功能。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法

2.接口的用途

接口定义某种功能的规范,当我们编写的某些类突然有一天需要某些新增的业务和功能时,这时只需要该类接口,重写接口的抽象方法,即具备的该功能。

接口可以扩展类的功能,弥补了java类单继承的缺陷。

当我们需要为某一批类扩展新功能时,我们通常会将新功能抽取到父类当中,由子类继承,子类便具有了这些功能。但是,java是单继承,一个类只能有一个父类,如果这些类已经有一个父类了,那么久不能通过继承的方式在扩展新功能了。

这时就可以将新功能定义到接口中,子类去实现接口,重写接口定义的新功能方法,就可以扩展这些新功能了。JAVA类中,JAVA类是单继承,接口是多实现(贼重点),那么JAVA类每当需要新的功能时,只要在接口中重新定新的功能,让JAVA增加实现类即可。

那为什么给类扩展新功能,一定要把新功能定义在父接口中呢,直接写在类中不是更方便么?

1、接口就是用来定义某些功能的规范,当需要扩展新的功能时,新的功能规范定义在接口中,子类只需要实现接口,便知道重写哪些功能,增加哪些新功能了。

2、避免了子类编码的随意性。假设,如果有多个类,增加某个新功能,这个新功能如果不通过接口来规范,那么就是每个子类各自写各自的新功能,那么就可能会各个子类有 各自想法(同一个新功能在不同的子类特征不一样)。

3、通过接口定义统一规范,实现面向接口编程(通过这种方式,可以使用接口类型来接收实现类型对象(多态))。好处是:将来调用对象时,我们仅需要调用该对象的某些来自接口定义的功能时,只需要通过接口来调用即可,从而实现了程序的解耦。

接口可以解决、降低对象与对象之间的依赖(解耦)。

理解接口:

电脑上主板有n多接口,但是定义这些接口的时候,并不知道将来会是什么设备插入到这个接口上,可能是鼠标、键盘、打印机等设备,虽然不同的设备类型不一样,但是只要这些设备都对主板的接口提供了支持(实现),那么这些设备就可以插到主板上进行使用了,将来开发了新的设备,这个新的设备也只需要对主板上的接口提供实现,那么该设备也可以插到主板上进行使用。

3.接口成员

1、接口的方法都是抽象方法,默认使用public abstract 修饰,不能修改。

2、接口的变量都是静态常量,默认使用public abstract final修饰,不能修改。

3、接口中的常量必须在声明时赋值,常量名称全大写。

 4.定义格式

接口关键字:interface

5.接口的用法

接口不能被创建对象,接口中的抽象方法由实现类实现。实现类使用implements实现接口,可以同时实现多个接口,使用逗号分割。

 

 

5.1 接口在多态中的体现

接口不能被创建对象,但是接口可以作为父类数据类型,接收他的实现类类型对象。

 

 实现类实现了接口,那么该实现类的对象也是接口类型。

5.2 实现接口和继承类的问题

JAVA类具有单继承,多实现的特点。每个类只能继承一个父类对象,但是可以实现多个父接口,顺序为:先继承,在实现(贼重点)。

 

6.接口的多继承

接口可以同时继承一个或多个接口,使用extends继承,逗号分割。

接口继承了父接口,具有了父接口的抽象方法和静态常量。所以,当实现类实现接口的时候,同时要实现这个接口继承过来的所有抽象方法

 

7.接口和抽象类的区别

7.1 接口和抽象类的相同点

1、抽象类和接口都不能被直接实例化,他们都需要被继承或实现。

(类和抽象类中间是继承关系,类和接口是实现关系,接口和接口之间可以有继承关系)

2、接口和抽象类都可以包含抽象方法,实现或继承他们的普通类必须重写抽象方法。

3、抽象类和接口,都可以体现在多态中,作为变量数据类型接收子类实例对象。

 

 

7.2 接口和抽象类的不同点

1、用途不同:

抽象类中抽取了多个子类的共性,作为模版存在,用于被子类继承实现代码复用。

接口定义了某种功能的规范,当类需要新增其他功能时,只需要实现接口,重写接口的规范(抽象方法)即可,同时接口也弥补了java单继承的缺陷。

2、接口里只能包含抽象方法,抽象类则可以包含普通方法和抽象方法。

3、接口不能定义静态方法(jdk1.8之后可以,抽象类可以)。

4、接口中的成员变量是静态常量,使用public static final修饰。抽象类则可以定义静态常量,也可以定义非静态成员变量。

5、接口不能被创建为对象,不含构造器,抽象类可以被实例化为对象,抽象类具有构造器。

抽象类是可以被实例化,子类对象创建的时候,创建抽象类父类对象。

抽象类是可以有静态代码块,构造代码块,构造器方法,抽象类就既可以有实例成员、也可以有静态成员。


http://chatgpt.dhexx.cn/article/NoLtkgFJ.shtml

相关文章

Pregel Master

转载于:https://www.cnblogs.com/fanweisheng/p/11269479.html

Pregel Combiner

转载于:https://www.cnblogs.com/fanweisheng/p/11269462.html

Pregel Aggregator

转载于:https://www.cnblogs.com/fanweisheng/p/11269466.html

Pregel Worker

转载于:https://www.cnblogs.com/fanweisheng/p/11269474.html

图计算-Pregel-Hama

一.图计算简介 1.1 图计算是专门针对图结构数据的处理. 许多大数据都是以大规模图或网络的形式呈现;许多非图结构的大数据,也常常被转换为图模型后进行分析;图结构很好地表达了数据之间的关联性;关联性计算是大数据计…

分布式图处理系统--Pregel

介绍分布式图处理系统–Pregel以及其开源实现–Giraph 图数据处理简介 图数据的应用 图数据 数据本身以图的形式呈现 社交网络传染病传播途径交通路网 某些非图结构的数据,也可以转换为图模型后进行处理 网页链接机器学习训练数据 关联性分析 图数据结构表达了…

graphx中Pregel函数详解

1、PregelAPI 图本质上是一种递归的数据结构,其顶点的属性值依赖于其邻接顶点,而其邻接顶点属性又依赖于其邻接顶点,许多重要的图算法通过迭代计算每个顶点的属性直到到达定点条件,这些迭代的图算法被抽象成一系列图并行操作。 2、…

Pregel与图迭代

graphx是如何实现Pregel迭代操作,我们应该如何使用该模型。先看下pregel接口源码: 接口中各参数的含义已在图中进行注释,所以此处不再赘述。简单介绍下源码中的参数说明: 剖析 pregel模型提供了消息收集方向、迭代次数、初始化消…

Google图算法引擎Pregel介绍

参考文献点击打开链接 【前言:有一种说法[1]是Google的程序里面80%用的是MapReduce,20%用的是Pregel。今天就来介绍一下这个Pregel。想要深入研究的同志们,可以参考最新的SIGMOD 2010 ppt[2]。】 简介 Pregel是一个用于分布式图计算的计算…

图计算: 使用 Spark Graphx Pregel API 处理分层数据

今天,分布式计算引擎是许多分析、批处理和流应用程序的支柱。Spark提供了许多开箱即用的高级功能(pivot、分析窗口函数等)来转换数据。有时需要处理分层数据或执行分层计算。许多数据库供应商提供诸如“递归 CTE(公用表达式&#…

pregel 与 spark graphX 的 pregel api

[原文](https://blog.csdn.net/u013468917/article/details/51199808)简介 在Hadoop兴起之后,google又发布了三篇研究论文,分别阐述了了Caffeine、Pregel、Dremel三种技术,这三种技术也被成为google的新“三驾马车”,其中的Pregel…

Pregel体系结构

在Pregel计算框架中,一个大型图会被划分成许多个分区,每个分区都包含了一部分顶点以及以其为起点的边 一个顶点应该被分配到哪个分区上,是由一个函数决定的,系统默认函数为hash(ID) mod N,其中,N为所有分区…

Spark GraphX 中的 pregel函数(转载)

文章目录 pregel函数源码 与 各个参数介绍:案例: 求顶点5 到 其他各顶点的 最短距离pregel原理分析 一篇关于 Spark GraphX 中 pregel函数 的笔记,通过一个小案例将pregel函数理解透彻。 pregel函数源码 与 各个参数介绍: def…

03 graphx 从 SSSP 来看 pregel

前言 呵呵 最近刚好有一些需要使用到 图的相关计算 然后 在其他文章中找到了一篇 关于最短路径的graphx计算的代码 spark graphx 最短路径及中间节点 呵呵 很久没有用这些东西了, 虽然只是简单的使用, 但是还是要 复习一下, 稍微理解一下 他的执行方式 pregel 相关论文 …

ArangoDB(四)Pregel

arango pregel.status()返回值 localhost:8529_system> pregel.status(1099521660554) {"state" : "done","gss" : 7,"totalRuntime" : 8.389497518539429,"aggregators" : {},"sendCount" : 392647,"re…

graphx中的pregel原理详解

优秀参考: graphx教程参考:https://www.jianshu.com/p/ad5cedc30ba4 pergel函数详细讲解:https://blog.csdn.net/hanweileilei/article/details/89764466 迪杰斯特拉原理简介:https://www.jianshu.com/p/ad5cedc30ba4 ps: 以最…

Pregel模型

简介 在Hadoop兴起之后,google又发布了三篇研究论文,分别阐述了了Caffeine、Pregel、Dremel三种技术,这三种技术也被成为google的新“三驾马车”,其中的Pregel是google提出的用于大规模分布式图计算框架。主要用于图遍历&#xf…

Spark Graphx Pregel(pregel参数详解,pregel调用实现过程的详细解释)

Spark Graphx Pregel 一.Pregel概述1.什么是pregel?2.pregel应用场景 二.Pregel源码及参数解释1.源码2.参数详细解释(1)initialMsg(2)maxIteration(3)activeDirection(4)…

2020.11.26课堂笔记(sparkGraphx算法之pregel)

参考博客:https://blog.csdn.net/hanweileilei/article/details/89764466 大佬博客写的很详细,不用继续看这篇了,随便写一些记录一下。 Pregel框架: Pregel是一种面向图算法的分布式编程框架,采用迭代的计算模型&…

Pregel(图计算)技术原理

图计算简介 图结构数据: 许多大数据都是以大规模图或网络的形式呈现。许多非图结构的大数据,也常常会被转换为图模型后进行分析。图数据结构很好地表达了数据之间的关联性。关联性计算是大数据计算的核心——通过获得数据的关联性,可以从噪…