javq接口_Java为什么要使用接口_java接口怎么使用

Java接口是什么

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

接口(英语:Interface),在JAVA编程语言中是一个抽象类型(Abstract Type),它被用来要求类(Class)必须实现指定的方法,使不同类的对象可以利用相同的界面进行沟通。接口通常以interface来宣告,它仅能包含方法签名(Method Signature)以及常数宣告(变量宣告包含了 static 及 final),一个接口不会包含方法的实现(仅有定义)。

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须宣告为抽象类(Abstract Class)。另外,在Java中,接口类型可用来宣告一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

其中一个使用接口的优势是,可以利用他们模拟多重继承,类在JAVA中不允许多重继承,所有在JAVA中的类必须而且仅能有一个父类,而java.lang.Object(JAVA类型系统中最顶层的类型)是唯一一个例外。

JAVA的类可以被实现许多个接口,然而一个接口则无法实现其他的接口。

b3eba86b960dd635ba4e1eb3b5b13361.png

Java为什么要使用接口

实现具体功能时,接口和实现的类分离。接口定义为XxxService,实现为XxxServiceImpl。接口提供了一个公用的方法提供方。 接口是用来规定子类的行为的。

面向接口编程的好处:

1、根据客户提出的需求提出来,作为接口的;业务具体实现是通过实现接口类来完成的。

2、当客户提出新的需求时,只需编写该需求业务逻辑新的实现类。

3、假如采用了这种模式,业务逻辑更加清晰,增强代码可读性,扩展性,可维护性。

4、接口和实现分离,适合团队协作开发。

5、实现松散耦合的系统,便于以后升级,扩展。

ff86e7cde8fd08267851bd9258bba909.png

Java接口能实现什么功能呢

在Java语言规范中,一个方法的特征仅包括方法的名字,参数的数目和种类,而不包括方法的返回类型,参数的名字以及所抛出来的异常。在Java编译器检查方法的重载时,会根据这些条件判断两个方法是否是重载方法。但在Java编译器检查方法的置换时,则会进一步检查两个方法(分处超类型和子类型)的返还类型和抛出的异常是否相同。

Java接口本身没有任何实现,因为Java接口不涉及表象,而只描述public行为,所以Java接口比Java抽象类更抽象化。但是接口不是类,不能使用new 运算符实例化一个接口。

如:

x=new comparable(……);//这个是错误来的。

但是可以声明接口变量

Comparable x; //这是允许的。

Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public、静态的和final属性。即接口中的属性可以定义为

public static final int value=5;

接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。一个角色由不同的演员来演,而不同的演员之间除了扮演一个共同的角色之外,并不要求其它的共同之处。

接口的定义方式如下

接口的主体包含着抽象方法,但所有方法在接口内(定义上)都是抽象(Abstract)方法,所以abstract的关键字在接口内则不被需要。由于接口代表着一个对外行为的集合,所以任何方法在接口内都是public(公开的)。

3d9a5b555abeb4530ac3e77d7c131690.png

接口内的成员皆为静态(static)、final及公开(public),反之,他们可以成为任何类或接口的类型

接口的使用解决类只能单继承的问题,因为一个类可以实现多个接口。

那么Java中要如何去实现一个接口并且在实现他的子类中调用接口中的方法呢?

接口的实现方式

bb4061733171fd56e60d71bac8db56d9.png

如果一个类实现了一个接口,而没有实现接口的所有方法,则它必须被标注为abstract(抽象类)。一个抽象类的子类必须实现它未完成的方法,假如该项子类仍不会实现接口的所有方法,那么该项子类依然需要被标注为abstract。

接口通常被使用在Java编程语言,用来做回调函数使用[2] 。Java并不允许方法作为参数传递使用,因此,其中一个解决办法则是可以定义一个接口,把这个接口当成方法的参数,以此来使用该项对象的方法签名。

子接口[编辑]

接口可以被延伸为数个不同的接口,可以使用上述所描述的方法,举例来说:

e5d13e23b109702d441dc819d210a75c.png

以上的程序片段是合法定义的子接口,与类不同的是,接口允许多重继承,而Predator 及 Venomous 可能定义或是继承相同的方法,比如说kill(Prey prey),当一个类实现VenomousPredator的时候,它将同时实现这两种方法。

有些泛用的Java接口可供参考:

Comparable

拥有一个方法compareTo,用以描述两个对象是否相等,或是其中一个对象大于另外一个对象。泛型允许已经实现的类,其对象可以用来互相比较。

Serializable 是一个marker interface 没有任何接口或是字段,仅有一个空的主体,它被用来表示一个类可以被序列化。它的Javadoc描述了他是如何运作,而且不需要被强制编程。

为了能够向上转型为多个基类型。即利用接口的多实现,可向上转型为多个接口基类型。

java接口的使用

java接口或抽象类都可以使用向上转型,它们用的都是java运行时多态技术,或者叫运行期绑定技术。下面是一个java接口的普遍用法:

7aa7420e5924836a7005fb6af9de9467.png

结果:

I’m a student.

I’m a teacher.

打开APP精彩内容

点击阅读全文

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[(转)hystar整理]Entity Framework 教程

预备知识 2 LINQ技术 2 LINQ技术的基础 - C#3.0 2 自动属性 2 隐式类型 2 对象初始化器与集合初始化器 3 匿名类 3 扩展方法 4 Lambda表达式 4 .NET中的数据访问 4 DataSet方案 5 改进的的DataSet方案 5 手写代码通过ADO.NET2…

13岁上中科大,17岁攻读哈佛博士,“天才”尹希的开挂人生

全世界只有3.14 % 的人关注了爆炸吧知识2013年美国斯隆基金会(Alfred P. Sloan Foundation)颁发的美国斯隆研究奖获得者尹希,31岁哈佛最年轻的华人教授,获2017年“豪华版诺贝尔奖”之称的科学突破奖-物理学新视野奖,这年唯一的获奖华裔。知识…

强制升级?!.NET Core 2.1容器镜像将从Docker Hub中删除

前言.NET Core 2.1将于2021年8月21日结束支持,本来应该没什么影响,该怎么用继续用得了。但是,如果你在生产环境使用了.NET Core 2.1容器镜像,那就要注意了,从8月21日开始,.NET Core 2.1容器镜像将不再在Doc…

“史上“最疯狂”的顶级数学家,看完后忍不住感慨太神了”

▲ 点击查看说起世界上最顶级的数学家,你的脑海中会浮现的,大概是欧拉、高斯、香农等数学巨匠。但是要说起成就和神秘性兼备的,一定就是——称为印度之子的——拉马努金。1887年12月22日,拉马努金出生在印度一个穷困潦倒的家庭&am…

致家长:疫情期间教育好自己的孩子,就是你最重要的事业!

全世界只有3.14 % 的人关注了爆炸吧知识疫情危机,却也是教育的契机。现在孩子呆在家里,老师管不了孩子,却也正是家长重新认识父母之责的契机。家长才是孩子的第一任老师,家长的言传身教、一举一动都影响着孩子成长。孩子是你的唯一…

设计模式之访问者

访问者模式介绍访问者模式能将算法与其所作用的对象隔离开来。访问者模式建议将新行为放入要给名为访问者的独立类中,而不是试图将其整合到已有类中。它允许你在不修改已有代码的情况下向已有类层次结构中增加新的行为。需要执行操作的原始对象将作为参数被传递给访…

转-SQL 2005修改系统表

FROM:http://blog.csdn.net/liangCK/archive/2008/10/07/3029315.aspx 在 SQL Server 2000 中修改系统表的方法大部分人都知道,介绍如何在 SQL 2005 中修改系统表的资料目前还比较少,虽然微软不赞成修改系统表,而且也把修改系统表…

清华男神再获世界大奖,从放牛娃到清华校长,他考研3次,读博7年,做出诺奖级的科研成果...

全世界只有3.14 % 的人关注了爆炸吧知识2月24日,菲列兹伦敦奖评奖委员会宣布,2020年度菲列兹伦敦奖将授予中国科学院院士、清华大学副校长、北京量子信息科学研究院院长薛其坤。帅气的老薛按照评奖委员会的通知,薛其坤是因为在实验上发现量子…

介绍自定义JDataGrid电子表格版本公式中的函数?

2019独角兽企业重金招聘Python工程师标准>>> How to write function in JDataGrid Spreadsheet Edition? 1. Understand the formula and function API used in JDataGrid Spreadsheet Edition? Obviously you should understand the “Function” and it’s su…

最新研究!新冠病毒被定义为“大流行”背后,竟然还藏着这样凶险的大杀器?...

全世界只有3.14 % 的人关注了爆炸吧知识你知道当一种疾病被定义为大流行(pandemic)时意味着什么吗?大流行(pandemic) 是指一种疾病在短时间内越过省界国界甚至洲界在全世界范围内流行。历史上,有很多疾病都…

Linux下查看进程对应的命令绝对路径

为什么80%的码农都做不了架构师?>>> 由于开发环境混乱,多人共享一台物理机,部分软件不是通过系统管理软件中心安装(例如:rpm,apt-get), 同时启动软件是在软件当前目录执行 ./XXX 。…

请收藏!这可能是目前最安全的数据加密传输解决方案

问题为了安全性起见,客户要求客户端必须将数据加密后才能传给服务端。起先,准备使用非对称加密(RSA)方式,但是发现它对原始文本长度有限制。而对称加密(AES)没有长度限制,但是使用固定密钥存在暴露的风险。…

厉害了!平均年龄8岁的抽象派画家,网友笑称:这些作品,康定斯基看了都得服气!...

全世界只有3.14 % 的人关注了爆炸吧知识在孩子们的眼中,世间万物都被赋予了无限的想象力,而绘画是他们独特想法和思维的表达。小鸟为什么在水里?因为它想学习游泳。鱼儿为什么会在天上?因为它想看看大地。一支小小的画笔&#xff…

Zabbix如何监控Windows机器

最近一直在研究Zabbix监控Windows机器,涉及到如何快速安装agent,如何修改和完善windows监控模板等等。想把自己的经验给大家分享一下,希望对大家有所帮助。1)安装agent客户端 首先分享一下用bat写的自动化安装Windows机器的agentd安装脚本,脚本里面的tc…

如何写出高质量代码

教你写出高质量代码的方法网络上有很多,比如设计原则、设计模式、重构技巧、命名规范等,以上这些本文统统都不会讲。个人理解高质量代码一定是结合业务并深度思考过的产出。很多人拿到需求后,业务和流程还没理顺后就直接编码,然后…

AOP技术研究 再续

第四部分 .Net平台AOP技术研究 4.1.Net平台AOP技术概览 .Net平台与Java平台相比,由于它至今在服务端仍不具备与unix系统的兼容性,也不具备类似于Java平台下J2EE这样的企业级容器,使 得.Net平台在大型的企业级应用上,常常为人所诟…

震惊!原来现在无所不能的世界主人翁,早已在三千年前就悄然出现!

▲ 点击查看早在春秋时代,鲁班作为机械工程师的祖师爷,就极其擅长且痴迷于一些古怪的机械装置,因此,他除了发明了墨斗、曲尺这些正儿八经的东西之外,最出名的就是用木头,发明了一只据说能在天上飞三天而不落…

ASP.NET MVC 1.0 Result 几何?

Action的返回值类型到底有几个?咱们来数数看。 ASP.NET MVC 1.0 目前一共提供了以下十几种Action返回结果类型: 1. ActionResult(base) 2. ContentResult 3. EmptyResult 4. HttpUnauthorizedResult 5. …

mysql双机互备linux成功的_配置MySQL双机热备 - Linux服务器MySQL双机热备份试验_数据库技术_Linux公社-Linux系统门户网站...

二、配置MySQL双机热备传统模式都是采用MySQL双机互备,至于双机热备我搜索了大量的精华帖子都没有发现安装配置文档。故我的一个想法产生了:当建立新的数据库时,默认会建立到/usr/local/mysql/data这里,如果能改掉默认配置文件my.…

万字总结:开源软件通识基础课第三周知识点总结

我们在前两周的课程上(第一周、第二周),系统讲授了 FOSS 的课程内容,第三周,我们开始进入 COSS(商业开源)的部分。本导学班在调研全球开源教育与课程的基础上,通过收集、整理、理解、…