interface(接口)

Posted Dva清流

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了interface(接口)相关的知识,希望对你有一定的参考价值。

多个无关的类可以实现同一个接口.

一个类可以实现多个无关的接口.

与继承关系类似,接口与实现类之间存在多态性.

定义JAVA类的语法格式:

< modifier> class < name > [extends < superclass >]

[implements <interface>] [,<interface>* ]{

< declarations>*

}

 

接口是抽象方法和常量值定义的集合.

从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现.

接口举例:

public interface Runner{

   public static final int id = 1;   //用static静态变量. 

   public void start();

   public void run();

   public void stop();

}

 

在接口中所有的方法都是abstract.

 

 

 

接口的特性:

接口可以多重实现. 多重接口.一个类可以实现多个接口.

接口中默认的属性是public static final的.也只能是public static final的.在定义中可以不写puiblic static final.写不写都一样.

接口中只能定义抽象方法,而且  这些方法默认是public的.也只能是public的.

接口可以继承其他的接口,并添加新的属性和抽象方法.

 

 

接口举例:

 

 接口的继承关系用implements(实现接口,等于实现接口中的抽象方法)

不要忘记接口中的方法都是抽象方法必须要进行重写.

  接上图

一个类可以实现多个接口.Teacher实现了painter和singer两个接口,重写两个接口的所有方法.

多个无关的类可以实现同一个接口. Teacher实现了singer接口,Student也实现了singer接口. 

 

 s2指向teacher   p1等价于s2也指向teacher. 

但是根据多态/动态绑定.  p1把teacher当做painter来看.能够访问teacher中的eat和paint.

 

f(singer s){

s.sing();

}

singer s是一个接口变量.只要实现了接口的任何对象都可以往里面传,例如上面S1 S2 都可以往里面传.

既然实现了接口,那么一定对接口进行了重写. 也就可以用sing这个重写过的方法.例如Student对sing进行了重写

f(Singer s){s.sing}是实现多态/动态绑定的语句.根据传入的接口变量动态绑定需要输出的sing.

输入s1会输出 Student is sing.   输入 s2 会输出teacher is sing.

接口和接口之间可以继承. 要注意需要重写的函数个数. 被继承的接口的函数也需要重写.

以上是关于interface(接口)的主要内容,如果未能解决你的问题,请参考以下文章

java里的interface接口类怎么用

java里的interface接口类怎么用?

interface接口

vs中interface含义

请教JAVA中interface的作用

interface与class