HTML5技术

【java】聊聊java里的接口 - 外婆的彭湖湾

字号+ 作者:H5之家 来源:H5之家 2017-09-19 15:00 我要评论( )

接口的概念 java中的接口用于 描述类 应该具备什么样 的功能 ,而 不给 出 具体的实现 ,一个类可以实现多个接口 【注意】接口不是类,而是对类的一组描述 还是让我们通过一个例子来看看接口如何运作吧! java文件结构: ├─myInterface.java└─Myclass.ja

接口的概念

java中的接口用于描述类应该具备什么样的功能,而不给具体的实现,一个类可以“实现”多个接口

 

【注意】接口不是类,而是对类的一组描述

 

还是让我们通过一个例子来看看接口如何运作吧!

 

java文件结构:  

├─myInterface.java   └─Myclass.java

 

myInterface.java :

public interface myInterface {    int function ( int arg ) ; }

 

Myclass.java:

public class Myclass implements myInterface{ public int function(int arg) { return 0; } }

 

在上面这个例子中,我们称 Myclass实现了(implements了)myInterface这个接口

 

接口的一些特性

 

1.置入一个接口的所有字段都自动具有staticfinal 属性, 也就是说,所有的字段都是静态常量

2.字段方法只能被public修饰, 而不能被private或者protected修饰(你可以不写出public,因为默认就是由public修饰的)

 

例如,如下用private修饰一个字段会导致报错

public interface myInterface {     private int a; }

 

报的错误是:

Illegal modifier for the interface field myInterface.a; only public, static & final are permitted

 

对比是学习的一种方式,下面我对接口的介绍,将在一系列的对比中展开

 

接口和超类的差异

 

我们发现,接口的定义方式和使用和超类很相似,例如:

 

超类的定义和使用:

public class superClass {  ... } public class subClass extends superClass { ...}

 

接口的定义和使用:

public interface myInterface { ... } public class Myclass implements myInterface{ ...}

 

 

就使用而言,超类通过class关键字定义, 并通过extends去“继承”,而接口通过interface关键字定义,并通过implement去“实现”

 

那么“接口”和“超类”有什么不同呢?

 

超类是一个“模板”,而接口是一种“契约”

 

1.超类的作用是为子类提供可复用(继承)的方法和域,并允许子类在此基础上添加新的方法和域,超类是一个“模板”

2.接口却不一样,接口并不提供给子类能够使用的方法。相反,接口约定了一组方法,并强制要求implements了(也即实现了)这个接口的类去“实现”接口约定的方法,接口是一种“契约”

 

如果你在implements了接口的类中没有按要求“实现”接口约定的方法的话,是会导致报错的,例如:

 

 

报的错误是:

The type Myclass must implement the inherited abstract method myInterface.function(int)

 

我们通过提示的quick fix修复一下:

 

 

可以看到,“实现”了接口约定的这个function方法后,报错消失了, 那怎么才算符合约定呢?这要求对应的方法的返回值类型和参数类型都和接口里的相同

 

让我对接口和超类的作用打个比方:

 

超类继承

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 【java】关于java类和对象,你想知道的在这里! - 外婆的彭湖湾

    【java】关于java类和对象,你想知道的在这里! - 外婆的彭湖湾

    2017-09-17 14:05

  • 【Java IO流】字节流和字符流详解 - 云开的立夏

    【Java IO流】字节流和字符流详解 - 云开的立夏

    2017-09-15 15:06

  • this的用法 – JavaScript深入浅出(二) - OkayChen

    this的用法 – JavaScript深入浅出(二) - OkayChen

    2017-09-15 12:00

  • JavaScript: 使用 atan2 来绘制 箭头 和 曲线 - 救火队长

    JavaScript: 使用 atan2 来绘制 箭头 和 曲线 - 救火队长

    2017-09-14 08:04

网友点评
p