package computerAndKeyboard; //接口的定义 public interface USB { /*定义抽象方法*/ /*接口不能创建对象,接口是更彻底的抽象*/ void connect(); void unconnect(); }
//实现类,键盘
package computerAndKeyboard; public class KeyBoard implements USB{ private String name; public KeyBoard() { } public KeyBoard(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public void connect() { System.out.println(name+"成功连接上了电脑"); } /* * 独有方法*/ public void keydown(){ System.out.println(name+"敲击了键盘,没毛病"); } @Override public void unconnect() { System.out.println(name+"成功从电脑中拔出!"); } }
//实现类,鼠标
package computerAndKeyboard; public class mouse implements USB{ private String name; public mouse() { } public mouse(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public void connect() { System.out.println(name+"成功连接上了电脑"); } /* * 独有方法*/ public void dbdone(){ System.out.println(name+"点击了鼠标————"); } @Override public void unconnect() { System.out.println(name+"成功从电脑中拔出!"); } }
//电脑类,用来连接两个设备
package computerAndKeyboard; public class computer { private String name; public computer(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public void start(){ System.out.println("开机了!"); } /*提供安装USB的入口*/ public void installUSB(USB usb){ /*定义方法时,使用父类型作为参数,该方法便可以接收一切子类对象,体现了多态的扩展性和便利*/ usb.connect(); //独有功能,先判断再强转 if (usb instanceof KeyBoard){ KeyBoard K = (KeyBoard) usb; K.keydown(); }else if( usb instanceof mouse ){ mouse m = (mouse) usb; m.dbdone(); } usb.unconnect(); } }
//测试类
package computerAndKeyboard; public class Test { public static void main(String[] args) { /*创建电脑对象*/ computer c = new computer("外星人"); c.start(); /*创建键盘对象*/ USB a = new KeyBoard("顺钙盐"); c.installUSB(a); //电脑对象自己调用自己内部定义的方法,方法括号里接收的是自己的子类对象 //在computer中定义方法时,就用父类作为参数,可以调用子类的一切对象。 /*创建鼠标对象*/ USB w = new mouse("罗技"); c.installUSB(w); } }