接口
概念:就个人而言,接口是一种约定,规范
非抽象子类必须重写接口中的所有的抽象的方法
类与接口之间的关系是实现的关系,(implements)
接口中可以定义静态方法、默认方法、私有方法
私有方法可以在接口中的默认方法中调用,
接口中可以定义属性,那么该属性必须是被publc static final 所修饰 并且应该进行初始化。
public interface Usb {
String name="张三 ";
int nums=1;
public static final int n=10;
static final public int n1=100;
void open();
void close();
}
接口也是可以实现多态的
Usb usb=new Mouse();//拿笔记本的USB接口和鼠标做一个例子。
实现接口的一个小案例:
interface Usb
package Weeks03.days03_qianfeng.Demo04;
public interface Usb {
void open();
void close();
}
Mouse.java
package Weeks03.days03_qianfeng.Demo04;
public class Mouse implements Usb {
@Override
public void open() {
System.out.println("打开鼠标");
}
@Override
public void close() {
System.out.println("关闭鼠标");
}
/**
* 鼠标特有方法(鼠标点击)
*/
public void click(){
System.out.println("鼠标点击");
}
}
KeyBord.java
package Weeks03.days03_qianfeng.Demo04;
public class KeyBoard implements Usb {
@Override
public void open() {
System.out.println("键盘打开");
}
@Override
public void close() {
System.out.println("键盘关闭");
}
/**
* 键盘特有方法
*/
public void type(){
System.out.println("键盘打字");
}
}
DemoTest.java
package Weeks03.days03_qianfeng.Demo04;
public class DemoTest {
public static void main(String[] args) {
Lenovo lenovo=new Lenovo();
Usb usb=new Mouse();
KeyBoard keyBoard=new KeyBoard();
lenovo.run();
lenovo.useUsb(usb);
lenovo.useUsb(keyBoard);
lenovo.shutdown();
}
}
Lenovo.java
package Weeks03.days03_qianfeng.Demo04;
public class Lenovo {
public void run(){
System.out.println("电脑开机并运行");
}
public void useUsb(Usb usb){
if (usb!=null){
usb.open();
if (usb instanceof Mouse){
Mouse mouse= (Mouse) usb;
mouse.click();
}else if (usb instanceof KeyBoard){
KeyBoard keyBoard= (KeyBoard) usb;
keyBoard.type();
}
usb.close();
}
}
public void shutdown(){
System.out.println("电脑关机");
}
}
测试结果:
电脑开机并运行
打开鼠标
鼠标点击
关闭鼠标
键盘打开
键盘打字
键盘关闭
电脑关机
Process finished with exit code 0