一、接口的基本定义

在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是一种定义好的标准协议,每个人必须遵循这种协议,如果协议修改了,所有实现这种协议的方法必须都进行修改才能继续使用这个接口。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。