可以理解为抽象类,但又不完全是抽象类,接口诞生的目的就是为了被重写,也是为了一定的规范
用代码简单模拟一个USB的接口标准
package com.lillanm.computer; 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() { } 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对象
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)