java语言中的接口

目录

一、概念

二、接口的声明

三、接口的实现类

四、接口的意义

五、注意事项


一、概念

1. 生活中的接口:

        例如计算机的USB接口,它的规范有:传输速度为10Gbit/s,三段式电压5V/12V/20V,最大供电100W等,

  它的主要功能是数据传输

        但是数据的传输过程不是USB接口存在了就能实现,还必须有支持USB接口的外部设备,例如U盘和鼠标。

        所以从中得出,接口的本质就是一种约定、规范、标准。

2. java中的接口

       是一组抽象方法常量和内嵌类型的集合。

       接口是java的一种引用数据类型,接口采用抽象的形式来描述约定,因此接口只有被类实现之后才有意义。

       上述例子中,U盘和鼠标支持USB接口,因此,U盘和鼠标可被称作USB接口的实现类

二、接口的声明

java使用interface关键字声明接口

以USB接口为例:USB接口有传输速率、功率等的规范,具有数据传输的功能。

public interface USB {
	
	public static final double speed = 10; 	//传输速率
	public static final double power = 100; //功率
	
	public abstract void dataTrasmit();     //数据传输方法约定
	
}

由于接口中不能声明变量,只能声明常量,故常量前可以省略修饰符public static final

接口中默认方法只能是公共的、抽象的,所以方法前可以省略修饰符 public abstract 。

故上述代码可以简化成:

public interface USB {
	
	double speed = 10; 	//传输速率
	double power = 100; //功率
	
	void dataTrasmit();     //数据传输
	
}

三、接口的实现类

(1) 声明接口的实现类--Mouse(也就是让鼠标支持USB接口),使用implements关键字表示“实现”的意思

public class Mouse implements USB{

	//必须实现接口中的所有方法
	public void dataTrasmit() {
		
		//模拟数据传输过程
		System.out.println("鼠标正在传输数据:");
		
		//继承了接口中的所有常量
		System.out.println("数据传输速率:" + speed);
	}

}

(2) 声明接口的实现类--U盘FlashDisk类

public class FlashDisk implements USB{

	@Override
	public void dataTrasmit() {
		System.out.println("U盘正在传输数据:");
		System.out.println("数据传输速率:" + speed);
	}
	
}

(3) 测试主类:接口引用实现类实例

public class USBTest {

	public static void main(String[] args) {
		//USB usb = new USB(); //报错,接口不能实例化
		
		USB usb = new Mouse();  //接上鼠标
		usb.dataTrasmit();      //测试的是鼠标的数据传输
		
		usb = new FlashDisk();  //改成插上U盘
		usb.dataTrasmit();      //测试的是鼠标的数据传输

	}

}

四、接口的意义

1. java采用接口实现多继承:一个类实现多个接口,就具有多种特性。

例如鼠标不仅可以通过USB接口传输数据到计算机,鼠标也可以通过蓝牙传输数据。

(1) 声明蓝牙接口:

public interface Bluetooth {
	
	double speed = 1;
	
	void dataTrasmit();     //传递数据
}

(2) 让鼠标新增蓝牙功能,implememts 后面用逗号隔开多个接口即可。

public class Mouse implements USB,Bluetooth{

	public void dataTrasmit() {
		
		//模拟数据传输过程
		System.out.println("鼠标正在传输数据...");
		
	}

}

 2. 只继承约定而不继承实现。即使一个类实现的多个接口中包含相同的方法声明,该类也只给出一种实现,没有二义性。

     换言之,即使其中存在约定冲突,也不存在实现冲突,对系统的运行没有影响。

     例如,一个既支持USB接口又支持蓝牙接口的鼠标,虽然这两个接口都具有数据传输的功能,

      但是真正在使用的时候,只用其中一种方式。

3. 接口为多个不相关的类约定某一特性的方法声明,在类型层次中表达对象拥有的属性。

     例如:蓝牙功能不仅仅只有鼠标有,话筒、音响等都可以支持,将来可能还有很多设备实现这种功能。

4. 方便构建对象体系,让系统易于扩展。

   一个接口对象可以引用实现该接口的类及其子类实例。

   接口的实现类之间可以相互替换。

五、注意事项

1. 一个类(class)的父类型包括:所继承的父类以及所实现的所有接口

2. 接口的实现类必须实现接口的所有抽象方法,除非该类是抽象的。

猜你喜欢

转载自blog.csdn.net/qq_42864422/article/details/105822628