当前位置: 首页 > news >正文

接口的使用,对象的上下转型

创建一个USB接口

package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 15:51
 */
// 定义了一个接口是USB,里面有两个抽象类方法,open什么设备,close什么设备都不清楚。
// 抽象类方法是不带大括号的。
public  interface  USB {
    public abstract void open();// 打开设备
    public abstract void close();// 关闭设备
}


创建一个笔记本电脑类


package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 15:53
 */

import Day3.Manager;
import Day3.Member;

public  class Computer {
    public void ProwOn(){
        System.out.println("笔记本电脑开机");
    }
    public void ProwOff(){
        System.out.println("笔记本电脑关机");
    }
    // 使用设备USB的方法,使用接口作为方法的参数
    public void useDevice(USB usb){
        // 打开设备
        usb.open();
        // 关闭设备
        usb.close();

        // 因为鼠标和键盘都有其特殊的方法
        // 这边我们用到判断
        if (usb instanceof Keyboard){
            Keyboard keyboard = (Keyboard) usb;
            //向下转型
            keyboard.type();
        }if (usb instanceof Mouse){
            Mouse mouse = (Mouse) usb;
            mouse.click();
        }

    }

}

创建一个鼠标类实现USB 接口


package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 15:54
 */
// 鼠标就是一个USB设备
public class Mouse implements USB {

    @Override
    public void open() {
        System.out.println("打开鼠标设备");
    }

    @Override
    public void close() {
        System.out.println("关闭鼠标设备");
    }

    public void click(){
        System.out.println("点击鼠标");
    }
}

创建一个键盘类实现USB接口


package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 15:56
 */
// 键盘就是一个USB设备
public class Keyboard implements USB {

    @Override
    public void open() {
        System.out.println("打开键盘设备");
    }

    @Override
    public void close() {
        System.out.println("关闭键盘设备");
    }
    public void type(){
        System.out.println("键盘输入");
    }
}

创建一个Main方法


package Day7;/*
 *@author wanghongyuan
 *@Create 2020/12/13 19:13
 */

public class DomeMain {
    public static void main(String[] args) {
        Computer computer = new Computer();
        computer.ProwOn();
        USB mouse = new Mouse();
        mouse.open();
        mouse.close();
        System.out.println("===========================");
        USB keyboard = new Keyboard();
        keyboard.open();
        keyboard.close();


        System.out.println("==========");
        computer.useDevice(mouse);
        computer.useDevice(keyboard);


        computer.ProwOff();


    }
}

相关文章:

  • Final的用法及注意事项
  • 类的注意事项
  • 超级重要的匿名对象
  • SimpleDateFormat的使用方法及注意事项
  • System中获取当时间,和复制的方法
  • StringBuilder的用法
  • 关于Integer的用法,以Integer为例子,其他八个基本数据类型也可以参照
  • Collection集合学习
  • Iterator迭代器的使用。
  • Java中泛型的概念及使用
  • 常见的数据结构
  • Collection中List的使用及注意事项
  • Collection下的set集合中的hashset方法使用
  • Meterphere安装及使用
  • Collection中set下的Hashset和LinkedHashSet的区别
  • Elasticsearch 参考指南(升级前重新索引)
  • IDEA常用插件整理
  • java概述
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Vue 2.3、2.4 知识点小结
  • 简单数学运算程序(不定期更新)
  • 原生Ajax
  • 智能网联汽车信息安全
  • 回归生活:清理微信公众号
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​决定德拉瓦州地区版图的关键历史事件
  • # 数论-逆元
  • #FPGA(基础知识)
  • #微信小程序:微信小程序常见的配置传值
  • (pojstep1.1.2)2654(直叙式模拟)
  • (二)springcloud实战之config配置中心
  • (附源码)计算机毕业设计高校学生选课系统
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (七)c52学习之旅-中断
  • (十三)Maven插件解析运行机制
  • (小白学Java)Java简介和基本配置
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转) ns2/nam与nam实现相关的文件
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • **PHP分步表单提交思路(分页表单提交)
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .java 9 找不到符号_java找不到符号
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .net refrector
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .Net下C#针对Excel开发控件汇总(ClosedXML,EPPlus,NPOI)
  • .Net转前端开发-启航篇,如何定制博客园主题
  • /var/spool/postfix/maildrop 下有大量文件
  • ::什么意思
  • @Async注解的坑,小心
  • @Conditional注解详解
  • @JsonFormat与@DateTimeFormat注解的使用
  • [.net] 如何在mail的加入正文显示图片