1.接口的概念
接口就是公共的行为规范标准,大家在实现时,只要符合规范标准,就可以通用。 在Java中,接口可以看成是:多个类的公共规范,是一种引用数据类型。
想要实现某个接口,必须要符合它的规范标准,安卓手机就不可以用苹果手机的充电器。
先定义一个接口
//注意:接口一定是抽象的,不能在接口中实例化对象
public interface USB {
//定义抽象方法 这四种写法都是可以的,推荐第一种,因为接口中方法默认是抽象的 public abstra是固定搭配
void openDevice();
//public void openDevice();
//abstract void openDevice();
//public abstract void openDevice();
void closeDevice();
}
因为接口是抽象的,所以它不可以直接使用,必须有一个“实现类”来实现它,并且接口中所有的抽象方法。为什么是所有的呢,来看下图。
意思就是,我定义的这个鼠标类要么是一个抽象类要么实现USB接口中的抽象方法。
接着我们定义了两个类,实现USB接口
/**
* 定义鼠标类实现USB接口
*/
public class Mouse implements USB {
//当我只实现一个接口中的方法是会报错
@Override
public void openDevice() {
System.out.println("打开鼠标");
}
@Override
public void closeDevice() {
System.out.println("关闭鼠标");
}
public void click() {
System.out.println("鼠标点击");
}
}
/**
* 定义键盘类实现USB接口
*/
public class keyBoard implements USB {
@Override
public void openDevice() {
System.out.println("打开键盘");
}
@Override
public void closeDevice() {
System.out.println("关闭键盘");
}
public void inPut() {
System.out.println("键盘输入");
}
}
我们的电脑上有很多USB接口,现在就以这个为例来看看它的使用
/**
* 定义电脑类,使用USB设备
*/
public class Computer {
public void on() {
System.out.println("打开电脑");
}
public void off() {
System.out.println("关闭电脑");
}
public void useDevice(USB usb) {
usb.openDevice();
//usb是否是Mouse或者是Mouse的子类的一个实例。
if (usb instanceof Mouse) {
Mouse mouse = (Mouse) usb;
//因为usb不能作为对象使用,所以我们用Mouse来引用它,有些类似于多态
mouse.click();
} else if (usb instanceof keyBoard) {
keyBoard keyBoard = (keyBoard) usb;
keyBoard.inPut();
}
usb.closeDevice();
}
}
这是测试类
public class TestUSB { public static void main(String[] args) { Computer computer = new Computer(); computer.on(); // 使用鼠标设备 computer.useDevice(new Mouse()); // 使用键盘设备 computer.useDevice(new keyBoard()); computer.off(); } }
运行结果