接口就像是一台电脑的各种数据接口,如USB,电源等接口,开发时我们也希望使用这种思维去进行相应的程序开发。
下面我们写一个案例,我们去设置不同的接口,给这些设置不同的功能(不同的抽象方法)。让不同的类来实现这些接口的功能
创建一个Computer接口
package com.bxw.demo.interface_demo;
// 定义一个电脑接口
public interface Computer {
// 定义一个打开显示屏方法
public void showOn();
// 定义一个关闭显示屏方法
public void showOff();
}
创建两个类,分别实现computer接口
package com.bxw.demo.interface_demo;
public class USB implements Computer {
@Override
public void showOn() {
System.out.println("USB插入,显示屏打开");
}
@Override
public void showOff() {
System.out.println("USB拔除,显示屏关闭");
}
}
class Power implements Computer{
@Override
public void showOn() {
System.out.println("电源插入,屏幕开启");
}
@Override
public void showOff() {
System.out.println("电源拔除,屏幕关闭");
}
}
创建一个类,用于管理接口与功能之间的联系,同时作为主程序执行他们
package com.bxw.demo.interface_demo;
public class MainClass {
public static void main(String[] args) {
USB usb = new USB();
Power power = new Power();
mainRun(usb);
mainRun(power);
}
public static void mainRun(Computer c){
c.showOn();
c.showOff();
}
}
这里总结一下:
在Computer接口中设置了两个方法,用于实现computer屏幕的关闭和开启
两个类都实现了computer接口,并且重写了实现功能
在MainClass中创建一个用于管理接口与实现类的方法,这个方法接收的是一个Conputer类型的参数,之后分别运行接口中定义的方法。
但是这里需要注意的是,两个类都实现了Computer接口,也就是说,两个类都是Computer类型的,在mian方法中调用mainRun方法时,分别传入两个类的对象,实现的功能会自动识别为两个类中重写的功能方法。
为了验证接口的实现类的类型是否是Computer,我们可以使用instanceof修饰符来比较,返回的是一个boolean值
System.out.println(usb instanceof Computer);// true
System.out.println(power instanceof Computer); // true