JAVA的接口
理解接口
可以理解为抽象类,但又不完全是抽象类,接口诞生的目的就是为了被重写,也是为了一定的规范
用代码简单模拟一个USB的接口标准
package com.lillanm.computer;
/**
USB接口 == 规范
*/
public interface USB {
//拔出 接入
void connect();
void unconnect();
}
里面包含两个需要被重写的方法,这些方法需要到具体的类中去实现
为什么要接口?
就像这个小案例里面,每一个设备都需要用到USB接口,而程序里使用接口可以降低代码的复杂性,提供更加简洁的代码,也是因为每个类里面对该方法的需求不同,所以基本都是需要重写方法的
package com.lillanm.computer;
public class Mouse implements USB {
private String name ;
public Mouse(String name) {
this.name = name;
}
public Mouse() {
}
@Override
public void connect() {
System.out.println(name+"成功链接了电脑~");
}
/*
独有功能
*/
public void DbClick(){
System.out.println(name+"点击屏幕,一键三连~");
}
@Override
public void unconnect() {
System.out.println(name +"成功从电脑中拔出了~");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package com.lillanm.computer;
public class KeyBoard implements USB {
private String name ;
public KeyBoard(String name) {
this.name = name;
}
public KeyBoard() {
}
@Override
public void connect() {
System.out.println(name+"成功链接了电脑~");
}
/*
独有功能
*/
public void keyDown(){
System.out.println(name+"键盘发出了友好问候~");
}
@Override
public void unconnect() {
System.out.println(name +"成功从电脑中拔出了~");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
以上两个键盘和鼠标类里面的方法,都继承了USB接口,所以代码简洁的同时也更方便阅读
upackage com.lillanm.computer;
public class Compute {
private String name;
public Compute(String name) {
this.name = name;
}
public Compute() {
}
/*
提供安装USB设备的入口
*/
public void installUsb(USB usb){
//多态:USB == 可能是鼠标,也可能是键盘
usb.connect();
if (usb instanceof KeyBoard){
KeyBoard keyBoard =(KeyBoard) usb;
keyBoard.keyDown();
}else if (usb instanceof Mouse){
Mouse mouse = (Mouse) usb;
mouse.DbClick();
}
usb.unconnect();
}
/*
电脑启动程序
*/
public void Start(){
System.out.println(name+"电脑启动了~");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
利用多态来new对象