多态,接口,面向对象小案例

本文通过Java编程实现了一个面向对象的设计案例,包括USB接口定义、鼠标和键盘类的实现,以及电脑类中安装USB设备的功能。鼠标和键盘类实现了USB接口,拥有各自的独特功能,如鼠标点击和键盘输入。在电脑类中,可以通过usbinstall方法安装USB设备并触发其特定功能。
摘要由CSDN通过智能技术生成

需求:

使用面向对象编程模拟;设计一个电脑对象,可以安装两个usb接口

鼠标:被安装时可以完成接入,调用点击,拔出功能

键盘:被安装时可以完成接入,调用打字,拔出功能

分析:

定义一个usb接口(申明usb设备的规范必须是:可以接入和拔出)

提供2个usb实现类代表鼠标和键盘,让其实现usb接口,并且分别定义独有功能

创建电脑对象,创建2个usb实现对象,分别安装到电脑并出发功能的执行

创建一个接口规范

public interface Usb {
	void connect();//接入功能
	void unconnect(); //拔出功能
}

创建一个鼠标类

/**
 * 鼠标
 */
public class Mouse  implements Usb{
	private String name;
	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	@Override
	public void connect() {
		// TODO Auto-generated method stub
		System.out.println(name+"鼠标已插入");
		
	}

	@Override
	public void unconnect() {
		// TODO Auto-generated method stub
		System.out.println(name+"鼠标已拔出");
		
	}
	/**
	 * 鼠标可以点击,鼠标的独立功能
	 */
	public  void  click() {
		System.out.println(name+"鼠标正在点击");
		
	}

	public Mouse(String name) {
		super();
		this.name = name;
	}
		

}

创建一个键盘类

public class KeyBoard implements Usb {
	private String name;//键盘名称
	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}
	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}

	public KeyBoard(String name) {
		super();
		this.name = name;
	}

	@Override
	public void connect() {
		// TODO Auto-generated method stub
		System.out.println("name"+"键盘设备已连接");
		
	}

	@Override
	public void unconnect() {
		// TODO Auto-generated method stub
		System.out.println("name"+"键盘设备已拔出");
		
	}
	
	public  void  input() {
		System.out.println(name+"正在输入文字");
	
	}
}

创建一个电脑类

public class Computer {
	private String name;

	/**
	 * @return the name
	 */
	public String getName() {
		return name;
	}

	/**
	 * @param name the name to set
	 */
	public void setName(String name) {
		this.name = name;
	}
	
	/**
	 * 安装usb
	 * @param a
	 */
	public void usbinstall(Usb usb) {//多态的应用
		usb.connect();//设备连接成功
		//私有方法先判断在强制转换
		if(usb instanceof Mouse) {
			Mouse mouse=(Mouse) usb;
			mouse.click();//鼠标独有的功能
		}
		else if(usb instanceof KeyBoard) {
			KeyBoard keyBoard =(KeyBoard) usb;
			keyBoard.input(); //键盘独有的功能	
		}
	
	}
	public  void run() {
		System.out.println(name+"电脑正在开机");
		
	}

}

测试一下


public class Test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Computer computer=new Computer();//创建电脑对象
		computer.setName("联想");
	    Usb  m=new Mouse("惠普");//买个个鼠标
	    computer.run();//电脑开机
	    computer.usbinstall(m);
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小萌新上大分

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值