Java基础:接口多态的综合案例 —— 笔记本电脑
笔记本电脑
笔记本电脑(laptop)通常具备使用USB设备的功能。在生产时,笔记本都预留了可以插入USB设备的USB接口,但具体是什么USB设备,笔记本厂商并不关心,只要符合USB规格的设备都可以。
定义USB接口,具备最基本的开启功能和关闭功能。鼠标和键盘要想能在电脑上使用,那么鼠标和键盘也必须遵守USB规范,实现USB接口,否则鼠标和键盘的生产出来也无法使用。
1. 案例分析
进行描述笔记本类,实现笔记本使用USB鼠标、USB键盘
- USB接口,包含开启功能、关闭功能
- 笔记本类,包含运行功能、关机功能、使用USB设备功能
- 鼠标类,要实现USB接口,并具备点击的方法
- 键盘类,要实现USB接口,具备敲击的方法
2. 案例实现
定义USB接口
package cn.itcast.day10.demo07;public interface USB {public abstract void open(); // 打开设备public abstract void close(); // 关闭设备}
定义鼠标类
package cn.itcast.day10.demo07;// 鼠标就是一个USB设备 public class Mouse implements USB {@Overridepublic void open() {System.out.println("打开鼠标");}@Overridepublic void close() {System.out.println("关闭鼠标");}public void click() {System.out.println("鼠标点击");} }
定义键盘类
package cn.itcast.day10.demo07;// 键盘就是一个USB设备 public class Keyboard implements USB {@Overridepublic void open() {System.out.println("打开键盘");}@Overridepublic void close() {System.out.println("关闭键盘");}public void type() {System.out.println("键盘输入");} }
定义笔记本类
package cn.itcast.day10.demo07;public class Computer {public void powerOn() {System.out.println("笔记本电脑开机");}public void powerOff() {System.out.println("笔记本电脑关机");}// 使用USB设备的方法,使用接口作为方法的参数public void useDevice(USB usb) {usb.open(); // 打开设备if (usb instanceof Mouse) { // 一定要先判断Mouse mouse = (Mouse) usb; // 向下转型mouse.click();} else if (usb instanceof Keyboard) { // 先判断Keyboard keyboard = (Keyboard) usb; // 向下转型keyboard.type();}usb.close(); // 关闭设备}}
测试类
package cn.itcast.day10.demo07;public class DemoMain {public static void main(String[] args) {// 首先创建一个笔记本电脑Computer computer = new Computer();computer.powerOn();// 准备一个鼠标,供电脑使用 // Mouse mouse = new Mouse();// 首先进行向上转型USB usbMouse = new Mouse(); // 多态写法// 参数是USB类型,我正好传递进去的就是USB鼠标computer.useDevice(usbMouse);// 创建一个USB键盘Keyboard keyboard = new Keyboard(); // 没有使用多态写法// 方法参数是USB类型,传递进去的是实现类对象computer.useDevice(keyboard); // 正确写法!也发生了向上转型// 使用子类对象,匿名对象,也可以 // computer.useDevice(new Keyboard()); // 也是正确写法computer.powerOff();System.out.println("==================");method(10.0); // 正确写法,double --> doublemethod(20); // 正确写法,int --> doubleint a = 30;method(a); // 正确写法,int --> double}public static void method(double num) {System.out.println(num);}}
Java基础:接口多态的综合案例 —— 笔记本电脑相关推荐
- 接口多态的综合案例——笔记本电脑
文章目录 1.1 笔记本电脑 1.2 案例分析 1.3 案例实现 1.1 笔记本电脑 笔记本电脑(laptop)通常具备使用USB设备的功能.在生产时,笔记本都预留了可以插入USB设备的USB接口, ...
- 第九课 Java基础篇——面向对象(综合案例)
1.文字版格斗游戏 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(〈new对象的时候),这些信息就应该被确定下来. Role.Java package cn.nwafu;import ...
- Java基础之多态深入解析
Java基础之多态深入解析 多态的基本概念 同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性.简单的说:就是用基类的引用指向子类的对象. 多态的优点 消除类型之间的耦合关系 ...
- Java基础十一--多态
Java基础十一--多态 一.多态定义 简单说:就是一个对象对应着不同类型. 多态在代码中的体现: 父类或者接口的引用指向其子类的对象. 1 /* 2 3 对象的多态性. 4 5 class 动物 6 ...
- java基础之多态的详细解释_JAVA基础之多态
下面我为大家讲解一下JAVA基础之多态,希望大家喜欢. 多态就是事物存在的多种形态,比如你在大街上看见一只藏獒,你可以说这只藏獒真凶猛,也可以说这只狗真凶猛,还可以说这个动物真凶猛,以上三种说法其实都 ...
- Java基础——接口
一.接口语法 接口的创建 interface //接口不能直接创建对象 public interface grammar {//定义的属性都是公有静态属性(默认也是)String name = &qu ...
- 【Java】抽象类继承的综合案例
文章目录 2.1 综合案例:群主发普通红包 1. 抽象类 1.1 概述 由来 父类中的方法,被它的子类们重写,子类各自的实现都不尽相同.那么父类的方法声明和方法主 体,只有声明还有 意义,而方法主体则 ...
- Java基础知识编写一个HelloWorld案例
常用dos命令 1.1.1 打开控制台 – win + R,然后cmd回车 1.1.2 常用命令 – d: 回车 盘符切换 – dir(direct ...
- 【Java基础】多态
首先先来个总结: 什么是多态 面向对象的三大特性:封装.继承.多态.从一定角度来看,封装和继承几乎都是为多态而准备的.这是我们最后一个概念,也是最重要的知识点. 多态的定义:指允许不同类的对象对同一消 ...
- Java基础---接口是啥?
接口 接口:是一个特殊的抽象类,规定了接口的使用者和接口的实现者之间的规范 定义:interface 接口名 {} 特点:接口中定义的属性都是公开静态常量(即使不加修饰符,也默认是public sta ...
最新文章
- JBoss 系列十六:JBoss7/WildFly配置domain模式
- 利用kickstart实现pxe自动安装linux
- 诗歌rails之 有条件的validation
- Type TIMESTAMP(6) of table field ‘ts‘ does not match with the physical type TIMESTAMP(3) of the ‘ts‘
- webresource_Jersey WebResource –标头不附加
- 【指南】远程抄表系统(AMR/AMI)中无线模块选型
- 细述 Java垃圾回收机制→How Java Garbage Collection Works?
- python函数可变参数_python中函数的可变参数
- PAT乙级(1030 完美数列)
- 货币化物联网:实现收益
- 连接 RIP 与 OSPF 网络
- 转:libatk-bridge.so错误解决
- Centos7下编译安装Nginx、Mysql、PHP(文章底部包含一键安装脚本)
- word文档怎么在左侧显示目录?
- html如何让文字变斜体,CSS中如何让文字变成斜体
- 哪个PDF软件好用?这几款你们知道吗?
- 20届春秋招数据分析面筋分享
- hadoop最新官网如何下载之前版本(2.7.1)
- Cypress系列(50)- wrap() 命令详解
- [苹果技巧]如何快速删除 Finder 工具栏上的图标?
热门文章
- 2.TCP/IP 详解卷1 --- 链路层
- 17.UNIX 环境高级编程--高级进程间的通信
- 15. 固若金汤:网站的安全架构
- href=“javascript:void(0);”和href=void(change_code(this));
- php中有关目录的几个函数 basename() dirname() pathinfo()
- AndroidStudio debug
- web开发实战--弹出式富文本编辑器的实现思路和踩过的坑
- HDOJ(HDU) 1860 统计字符
- xp共享文件win7访问时不能保存密码
- 基于C#的MongoDB数据库开发应用(2)--MongoDB数据库的C#开发