JAVA中,除了类(class)之外,还有一种和类相类似的定义,叫做接口(interface)。对于一个类来说,是可以被其他类所继承的;而对于一个接口来说,也是可以被其他类所继承,或者我们用更加形象专业一点的说法——接口被类实现!这就是实现接口!
我们拿接口与类作类比,当然要注意接口和类不同之处。首先从本质意义上入手,类是由许多具有相同特征相同行为的对象集合而成,有着自己的属性和方法,是有确定内涵的;但是接口不同,接口仅仅只是一个接口,并没有什么实质性的内容,其中唯一能有的,也只是一个没有方法体的方法签名。打个比方,我们的笔记本两侧就有很多的接口,有耳机口,有话筒口,有USB口,还有网线口等等……这些口子都类似于java中的接口,就好像你能从接口里看到方法签名一样,你可以知道笔记本两侧的那些口子分别是干嘛用的。但是具体这些方法是怎样运作的呢?单从java接口看是看不出的,就好像你光看笔记本两侧的口子根本不知道口子内部蕴含的原理!而实现接口,就像你必须在这些口子上插上线才能实现这些口子的功能一般。我想,这样解释应该挺好理解的吧!
我们再来从代码上看看类和接口的不同:
//类:
public class A {
private a;
private b;
public void c(){
System.out.println("这是方法体!");
}
}
//接口:
public interface B {
public void d(); //接口内部只能有方法签名且不能带方法体!
}
//类的继承:
public class A1 extends A{
……
}
//接口的实现:
public class B1 implements B{
public void d(){
System.out.println("这是B1类对B接口中方法的实现(补充)!");
}
}
这里面,extends是继承的一个关键词,implements是实现接口的关键词。类可以实现接口,接口也可以实现接口,用的则是extends关键词!
所以,很多时候你写代码,发现有些方法需要的参数是接口类型时,你也可以传入一个实现了那个接口的类的参数,方法也是能够调用的。当然,大多时候就需要你自己新建一个类去实现接口。(详见:给窗体添加事件监听器)