Java课程 - Java的接口详解

Java课程 - Java的接口详解

什么是接口

上一次,我们讲了继承。具体内容大家可以翻阅一下之前的文章。

https://blog.csdn.net/ming2r/article/details/101052528

今天,我们来讲一讲什么是接口,以及如何使用接口。

按照惯例,我们先来看一看官方的定义。

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

翻译一下,接口就是定义规范。每一个类,都可以实现这些接口,然后按照自己的方式去实现。例如,每一个人都会说话,所以我们可以定义一个“说话”的接口。但是每一个人说的语言又不相同,我们就可以通过对“说话”这个接口进行实现,这样每一个人说的语言就不同了。

为什么要使用接口

之所以要使用接口,其实相当于做了一下规范。规定每一个实现这个接口的方法,不能随意修改所制定的方法。

同时,也提供了灵活性,规范是定义好了,但是具体怎么实现,是可以通过不同的类去实现的。

一方面,即规定了限制,又提供了灵活性。在实际项目的使用中,精简了项目结构,可以提供很好的阅读感受。

今后,我们加上Spring的强大注入功能,在实际项目中再进行讲解。

如何使用接口

变量的定义

举个例子。我们定义一个PersonInterface接口,同时定义name以及age两个属性。

在这里插入图片描述

可以看到,public、static两个修饰词都是灰色,即说明,其实它们是可以省略的。

接下来,我们来试着引用一下这两个变量。

在这里插入图片描述

可以看到,不管有没有使用public、static修饰,我们都可以直接引用到这两个变量。

方法的定义

我们来定义一个say方法。

在这里插入图片描述

可以看到,这个say方法,是没有任何的代码的,就是空荡荡的。那么,我们该如何去使用它呢?

我们再建一个类,EnglishPersonImpl,接着我们实现一下PersonInterface这个接口。

在这里插入图片描述

可以看到,IDEA已经提示错误了,说明我们没有实现PersonInterface里面的方法,我们来实现一下。

如下图,现在已经可以了。我们来实现一下say方法。

在这里插入图片描述

我们来试着调用一下。

在这里插入图片描述

打印结果为:说英文

这就说明我们的实现类已经正确写好了。

如果我们又有一个说日文的同学,那么我们就再定义一个JapanesePersonImp类,然后实现PersonInterface接口,接着实现say方法即可了。

接口的特点

写完了例子,我们来总结一下接口的特点。

  • 接口不是class,而是interface
  • 接口中所有的成员变量,默认都为public、static、final,且都必须初始化。
  • 接口中没有构造方法,不能被实例化
  • 一个接口不能实现(implements)另一个接口,但它可以继承多个其它的接口

接口与抽象类的区别

(1)抽象类

  • 1、抽象方法必须存在于抽象类中。
  • 2、类声明abstract,只能被继承使用。
  • 3、子类继承抽象类必须实现其中的抽象方法,除非子类为抽象类。

(2)接口

  • 1、接口里面的方法默认都是public abstract,也就是接口里面只能有抽象方法,不能有普通方法,而抽象类是可以有普通方法的。
  • 2、接口只能定义静态常量属性,而抽象类既可以定义静态常量属性,也可以定义普通属性。
  • 3、接口不包含构造方法,抽象类包含可以构造方法。

JDK1.8新特性

在JDK1.8对接口新增了两个修饰词,static以及default,我们来看一看、

static修饰的方法可以直接用接口名去调用就可以,default修饰的方法,实现接口的类不需要实现该方法。

在这里插入图片描述

public class PersonInterfaceTest {
    public static void main(String[] args) {
        PersonInterface person = new EnglishPersonImpl();
        person.say();
        person.jump();
        PersonInterface.eat();
    }
}

运行之后的结果为:

说英文
跳跃
吃饭

总结

我们详细讲了接口与接口的实现,可能很多人会觉得,这不是多此一举吗?

但是,在大型项目当中,最重要的一点,就是结构清晰,代码简洁。不管是否使用接口、继承、抽象类,最重要的一点,就是要保证代码的简洁、结构的清晰。

抛开简洁与清晰,单纯、盲目地使用接口、继承、抽象类,也是不正确的。

所以,大家也谨记这一点,在今后自己的项目中,要进行权衡,而不是盲目地使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程介绍:这是一门Java语言入门课程,针对的是Java初学者或者从事其他计算机语言开发但希望转到Java开发工作上来的软件工程师,是所有想入java之门的朋友首先要学的第一门课,也是整个Java开发的核心和基础,也就是大家常说的JAVA SE版本中涵盖的知识;本门课程将采用 windows平台下的intellij IDEA开发环境作为主要的讲解平台,对于熟悉其他Java开发环境的学友们,当然也可以选择自己熟悉的平台;本门课程希望达到的目标是给大家打语言基础,但不希望一上来给大家太重的学习负担,分阶段,逐步的学习,是更好的学习方式,所以在本门课程中,我们将只涉及到基础的语言,以及面向对象程序设计的一些基础概念,更多的知识和概念我们将放在进阶课程中讲解,这一点望大家知晓;在Java诞生的不到30年时间里,Java开发人员的市场需求已经增长到了一个非常惊人的程度,至少目前来看,没有任何一门开发技术能够和java比,从待遇方面,高级Java开发人员的薪资也是相当的高,大概只有c++能够和Java掰一掰手腕,其他的开发技术的薪资待遇,很难与Java比较。很多想学习java的同学,会有一种困惑,感觉Java知识特别零散,除基本的Java语言外,各种概念、各种框架层出不穷,那我们怎么入学习之门,学到什么程度,能找到什么样的工作,这些问题就会困扰着我们;针对这种情况,我将不断推出一系列的Java课程,通过这一系列的课程,为大家搭建一条比较完整的Java学习链条,我并不准备回答大家“学到什么程度,能找到什么样的工作这种问题“,因为当你学到一定的程度之后,你自然就会找到答案,但有一点可以确定:仅仅学习完本门课程还不够,还需要继续深入学习下去!讲解中所安装的是jdk版本是jdk 12版本,但这并不意味着我们要把这个版本中的所有知识讲解的面面俱到,把最有用、最实用,最能帮助大家加薪的知识挑选出来讲解是老师的重要责任;讲师介绍:王健伟老师,网名:狂想(KuangXiang),1995年毕业于哈尔滨工程大学计算机及应用专业,20多年软件开发经验,经历过数十个软件项目开发包括网络通信、网络安全、网络游戏等领域,多年的摸爬滚打使自身具备了极其深厚的开发实力和实战经验。深圳知名网络安全公司安络科技(www.cnns.net)有限公司创始人之一、中国首套网络安全在线扫描评估系统项目负责人,电子工业出版社2003年《Crystal Reports水晶报表设计与开发实务》书籍作者,全球同服独立游戏《冒险之路》制作人。在教学上,老师自带讲课天赋,善于用最清晰、最通俗的语言把复杂问题简单化,让你听了就能懂,当节学完基本就能掌握,老师能够为你节省大量的学习时间并能达到极好的教学效果!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值