Java 多态案例
多态是面向对象的三大特征之一。本节主要是通过一个多态的使用案例,用以加深对多态的理解。
需求:
- 使用面向对象编程模拟:设计一个电脑对象,可以安装2个USB设备。
- 鼠标:被安装时可以完成接入,调用点击功能,拔出功能。
- 键盘:被安装是可以完成接入,调用打字功能,拔出功能。
分析
- 定义一个USB的接口(声明USB设备的规范必须是:可以接入和拔出)。
- 提供2个USB实现类代表鼠标和键盘,让其实现USB接口,并分别定义独有功能。
- 创建电脑对象,创建2个USB实现类对象,分别安装到电脑中并触发功能的执行。
//定义USB接口
public interface Usb {
public void connect();
public void unconnect();
}
public class Compute {
private String name;
public Compute(String name) {
this.name = name;
}
public Compute() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//实现接入USB设备功能
public void install(Usb usb){
usb.connect();
//实现某款USB设备独有功能
if(usb instanceof Keyboard){
Keyboard k = (Keyboard) usb;
k.kydowm();
}else if (usb instanceof Mouse){
Mouse m = (Mouse) usb;
m.dbclick();
}
usb.unconnect();
}
}
public class Keyboard implements Usb{
private String name;
public Keyboard() {
}
public Keyboard(String name) {
this.name = name;
}
@Override
public void connect(){
System.out.println(name + "键盘连接成功!");
}
@Override
public void unconnect(){
System.out.println(name + "键盘已断开!");
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void kydowm(){
System.out.println("执行双击回车操作成功!");
}
}
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("长按点赞,一键三连!");
}
}
public class Test {
public static void main(String[] args) {
Usb u1 = new Mouse("罗技");
Usb u2 = new Keyboard("黑爵");
Compute c = new Compute();
c.install(u1);
System.out.println("---------------------");
c.install(u2);
}
}