当前位置: 首页 > 工具软件 > interface > 使用案例 >

关于interface接口的使用与理解

长孙修远
2023-12-01

1、什么是interface接口?

首先,接口是与类平行的结构,两者都是独立的一个结构,都有自己的定义与规则,接口不属于类

2、如何定义interface接口?

定义接口中的成员:在jdk7以前只能定义全局常量(使用public static final修饰的变量,通常可以省略不写)与抽象方法(类似于方法,但是没有方法体,使用public abstract修饰变量名)。注意在接口中不能定义构造器!意味着接口不可以被实例化new出对象。

3、如何使用interface?

只要编写了接口,意味着要去使用实现,否则没有意义,在java中类利用implements关键字来实现接口,当使用implements时,必须要实现接口中定义的抽象方法,即覆盖接口中的抽象方法(类似于重写),只有实现了接口中的抽象方法才能去实例化本类中的对象。

4、interface可以实现多继承

java中不允许类的多继承,但是接口之间的多继承是被允许的,同时也可以接口的多实现,例如:class AA extends BB implements CC,DD,EE

5、interface的理解:

与abstract class有一定的异同点

相同点:显然的是interface与abstract class都是由abstract关键字修饰的,所以两者都是不可以实例化,同时为了本身有意义,两者分别需要实现类和子类去实现已经声明的抽象方法。

不同点:

①interface是通过implements来实现,而abstract class需要通过extends关键字由子类继承。

②一个类可以实现多个interface,但是一个类只能 继承一个abstract class

③对于interface而言,强调的是某一个功能的实现,例如USB接口功能,里边定义“传输功能”抽象方法,可以通过U盘类实现里面的抽象传输功能,可以通过打印机类实现抽象传输功能,在乎的是有这样一个功能,至于被谁实现这是不被关心的。而对于abstract class则更加强调的是所属关系,在一个vehicle类中,定义一个行驶距离的抽象方法,计算燃料效率的抽象方法,然后通过子类的继承实现抽象方法,可以发现方法与类之间有着某种特定关系。总而言之两者在第三点上的差异有,但是不大,无需过多在意。

④在abstract class中不是所有的方法都有abstract修饰,意味着可以有非abstract修饰的方法,此时方法中一定有方法体,所以说对于抽象方法的定义,在abstract class中是一定需要显式用abstract修饰,而在interface中则不一样,默认就有abstract修饰,所以abstract关键字也可以省去。

⑤abstract class可以使用public,protected修饰符修饰,而interface只能使用public修饰符修饰。

由上可见,interface是比abstract class更加抽象的一个结构。

简单的Interface实现:

UsbInterface接口:

public interface UsbInterface {
	public void start();	//开始工作
	public void stop();		//停止工作
}

Usb接口实现类:

public class Usb implements UsbInterface {
	@Override
	public void start() {
		System.out.println("USB现在开始工作");
	}
	
	@Override
	public void stop() {
		System.out.println("USB现在停止工作");
	}
}

Computer类(用于调用实现的抽象方法):

public class Computer {
	public void transfer(UsbInterface ui){	
		ui.start();
		System.out.println("传输过程中的细节操作");
		ui.stop();
	}
}

 InterfaceTest测试类:

public class InterfaceTest {

	public static void main(String[] args) {
		Computer com = new Computer();

        //UsbInterface ui = new Usb();使用了多态思想,
        //UsbInterface ui是终极抽象,new出的对象向上转型
		com.transfer(new Usb());	               
	}

}

输出结果:

USB现在开始工作
传输过程中的细节操作
USB现在停止工作

 类似资料: