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(接口)的主要内容,如果未能解决你的问题,请参考以下文章