需求:
- 使用面向对象编程模拟:设计一个电脑对象,可以安装2个USB设备
- 鼠标:被安装时可以完成接入、调用点击功能、拔出功能
- 键盘:被安装时,可以完成接入、调用打字功能、拔出功能
分析:
1、定义一个USB接口(申明USB设备的规范必须是:可以接入和拔出)
2、提供两个USB实现类代表鼠标和键盘,让其实现USB接口,并分别定义独有的功能
3、创建电脑对象,创建2个USB实现类对象,分别安装到电脑中并触发功能执行
接口USB
package com.itheima.convert;
public interface USB {
//接入 拔出
void connect();
void plug();
}
键盘KeyBoard
package com.itheima.convert;
public class KeyBoard implements USB{
private String name;
@Override
public void connect() {
System.out.println(name+"成功连接电脑");
}
@Override
public void plug() {
System.out.println(name+"成功从电脑中拔出");
}
/**
* 独有的功能
*/
public void KeyDown(){
System.out.println(name+"敲击了:9999999");
}
public KeyBoard(String name) {
this.name = name;
}
public KeyBoard() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
鼠标Mouse
package com.itheima.convert;
public class Mouse implements USB{
private String name;
@Override
public void connect() {
System.out.println(name+"成功连接电脑");
}
@Override
public void plug() {
System.out.println(name+"成功从电脑中拔出");
}
/**
* 独有的功能
*/
public void click(){
System.out.println(name+"点击了小红心");
}
public Mouse(String name) {
this.name = name;
}
public Mouse() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
电脑Computer
package com.itheima.convert;
public class Computer {
private String name;
/**
* 提供安装USB设备的入口
*/
public void start(){
System.out.println(name+"电脑开机了");
}
public void installUSB(USB usb){
//多态:usb可能是鼠标也可能是键盘
usb.connect();
//多有功能:先判断在强转
if (usb instanceof KeyBoard){
KeyBoard k=(KeyBoard) usb;
k.KeyDown();
}else if(usb instanceof Mouse){
Mouse m=(Mouse) usb;
m.click();
}
usb.plug();
}
public Computer() {
}
public Computer(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
测试类Test
package com.itheima.convert;
public class Test {
public static void main(String[] args) {
//创建电脑对象
Computer c=new Computer("外星人");
c.start();
//创建鼠标对象
USB u=new Mouse("罗技鼠标");
c.installUSB(u);
//创建键盘对象
USB a=new KeyBoard("联想键盘");
c.installUSB(a);
}
}
结果