前言
这是一个多态的实例,模拟鼠标、键盘插入拔出,面向对象思想
一、实例步骤
1.创建接口
/*
* USB接口==规范
* */
public interface USB {
//拔出 插入
void connect();
void unconnect();
}
2.创建鼠标、键盘、电脑类
Mouse
public class Mouse implements USB {
private String name;
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+"成功接入电脑");
}
@Override
public void unconnect() {
System.out.println(name+"成功拔出电脑");
}
/*
* 独有功能
* */
public void dbClick(){
System.out.println(name+"点击鼠标");
}
}
KeyBoard
public class KeyBoard implements USB{
private String name;
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+"成功接入电脑");
}
@Override
public void unconnect() {
System.out.println(name+"成功拔出电脑");
}
/*
* 独有功能
* */
public void keyDown(){
System.out.println(name+" 敲击键盘");
}
}
Computer
public class Computer {
private String name;
public String getName() {
return 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 void setName(String name) {
this.name = name;
}
public Computer(String name) {
this.name = name;
}
}
3.创建测试类
package com.xxf.polymorphic_test;
/*
* 目标:USB设备模拟
* 1、定义USB接口:插入、拔出
* 2、定义两个USB实现类:鼠标、键盘。
* 3、创建一个电脑对象,创建USB设备对象,安装启动
* */
public class Test {
//a、创建电脑对象
public static void main(String[] args) {
Computer c=new Computer("神船");
c.start();
//b、创建一个鼠标、键盘对象
USB u=new KeyBoard("双飞燕");
c.installUSB(u);
USB u1=new Mouse("罗技");
c.installUSB(u1);
}
}