一、接口的基本定义
在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。
除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。
接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。
二、接口的基本语法
1.使用interface定义;
2.接口当中的方法都是抽象方法;
3.接口当中的方法都是pubic权限;
4.实现接口使用implements关键字;
5.一个类可以实现多个接口;
6.一个接口可以继承多个接口;
三、接口如何使用
//USB接口
interface USB{
public void read();//写不写都是public权限。
void write();
}
//wifi 接口
interface WiFi{
public void open();
public void close();
}
//实现两个接口
class Phone implements USB,WiFi{
public void read(){
System.out.println("phone usb read");
}
public void write(){
System.out.println("phone usb write");
}
public void open(){
System.out.println("phone Wifi open");
}
public void close(){
System.out.println("phone wifi close");
}
}
class Test{
public static void main(String args[]){
Phone phone = new Phone();
USB usb = phone;
usb.read();
usb.write();
WiFi wifi = phone;
wifi.open();
wifi.close();
}
}
//输出结果为
//phone usb read
//phone usb write
//phone Wifi open
//phone wifi close
简单来说 定义了USB,wifi两种接口。phone可以按照自己的方法实现这两种接口,但必须遵循这种接口的协议。
四、接口和抽象类
(1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。以phone为例,抽象类可能定义了open和close两种方法。每个手机都有open和close两种方法,手机可以继承然后重写这两种方法。但是功能机不一支持wifi和usb这两种协议,USB和wifi同时也可以用在其他设备中,比如电脑。
(2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。比如open和close方法,如果需要对手机的open和close方法公共不封进行修改则只需要修改父类方法就好了。但是wifi和USB是一种定义好的标准协议,每个人必须遵循这种协议,如果协议修改了,所有实现这种协议的方法必须都进行修改才能继续使用这个接口。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。