案例:
- 使用面向对象编程模拟:设计一个电脑对象,可以安装2个USB设备
- 鼠标:被安装时可以完成接入,调用点击功能,拔出功能。
- 键盘:被安装时可以完成接入,调用打字功能,拨出功能。
1.定义USB接口:
//USB接口
public interface USB {
void connect();//接入
void unconnect();//拔出
}
2. 定义两个USB实现类:键盘和鼠标:
/**
* 实现类:键盘
*/
public class KeyBoard implements USB {
private String name;
public KeyBoard(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 + "成功从电脑拨出。");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/**
* 实现类:鼠标
*/
public class Mouse implements USB {
private String name;
public Mouse(String name) {
this.name = name;
}
@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;
}
}
3. 创建电脑类:
public class Computer {
private String name;
public Computer(String name) {
this.name = name;
}
public void start(){
System.out.println(name + "开机了。");
}
//提供安装USB设备的入口
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.dbClick();
}
usb.unconnect();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
4.创建电脑对象和USB设备对象,安装启动:
public class Demo {
public static void main(String[] args) {
//a.创建电脑对象
Computer c = new Computer("外星人");
c.start();
//b.创建鼠标,键盘对象
USB u = new KeyBoard("键盘");
c.installUSB(u);
USB u1 = new Mouse("鼠标");
c.installUSB(u1);
}
}