首页 > 编程语言 >Java多态综合案例(包含接口,接口实现类)

Java多态综合案例(包含接口,接口实现类)

时间:2023-06-08 21:55:26浏览次数:58  
标签:Java usb void 多态 接口 Mouse public name

首先定义一个接口 名为USB

其次定义两个实现类分别名为KeyBorad和Mouse

此时就可以使用多态了,因为实现类和接口某种意义上来说是继承关系。

USB u = new Keyborad();

USB u2  = new Mouse();

因为键盘和鼠标都具有插拔功能,所以为了方便,把这两个功能写入接口,然后实现类重写。

package com.itheima.d4_polymorphic_test;

/**
 * USB接口 == 规范
 */
public interface Usb {
    // 接入 拔出
    void connect();
    void unconnect();
}

但是键盘和鼠标也有他们的独有功能,所以把独有功能写入各自的实现类中

package com.itheima.d4_polymorphic_test;

public class KeyBoard implements Usb{
/**
     * 独有功能
     */
    public void KeyDown(){
        System.out.println("王文军键盘敲击了老铁666!");
    }
}

此时创建电脑类 Computer

package com.itheima.d4_polymorphic_test;

public class Computer{
    private String name;

    public Computer(String name) {
        this.name = name;
    }

    public void start(){
        System.out.println(name + "已经启动!");
    }
    /**
     * 提供安装usb设备的入口
     */

    public void installUSB(Usb u){
        //多态:usb == 可能是鼠标 也可能是键盘
        u.connect();
        if( u instanceof KeyBoard){
            KeyBoard k = (KeyBoard) u;
            k.KeyDown();
        }else if(u instanceof Mouse){
            Mouse m = (Mouse) u;
            m.click();
        }
        u.unconnect();
    }

}

再创建测试类Test

package com.itheima.d4_polymorphic_test;

/**
 * 目标: usb设备模拟
 * 1、定义usb接口: 接入、拔出
 * 2、定义2个usb的实现类,鼠标,键盘
 * 3、创建一个电脑对象,创建usb设备对象,安装启动
 */
public class Test {
    public static void main(String[] args) {
        //a、创建电脑对象
        Computer c = new Computer("原神电脑!");
        c.start();

        //b、创建鼠标,键盘对象
        Usb u = new KeyBoard("RK");
        c.installUSB(u);
        Usb u2 = new Mouse("雷蛇");
        c.installUSB(u2);

    }
}

然后运行就可以了

标签:Java,usb,void,多态,接口,Mouse,public,name
From: https://www.cnblogs.com/liandaozhanshi/p/17467790.html

相关文章

  • 一个Java对象到底占用多大内存?
    一个Java对象到底占用多大内存? 最近在读《深入理解Java虚拟机》,对Java对象的内存布局有了进一步的认识,于是脑子里自然而然就有一个很普通的问题,就是一个Java对象到底占用多大内存?在网上搜到了一篇博客讲的非常好:http://yueyemaitian.iteye.com/blog/2033046,里面提供的......
  • java分页代码
    现在开始编写 Service 层代码:在 com.game.products.services.iface 包中新建 ProductsService 接口,代码如下:packagecom.game.products.services.iface;importjava.util.List;importcom.game.products.model.Products;publicint......
  • javascript操作xml(增删改查)例子代码
    关键字:javascript操作xml(增删改查)自己做了一个小东西,不是很好,但是对初学来说是一个不错的例子!包括了stu.hta(是HTML应用程序);stu.xml注意下面的HTML代码必须保存为后缀名为hta否则当对XML文件进行操作(增删改)的时候就会提示没有权限!!文件stu.hta代码如......
  • javaScript通用数据类型校验_2
    /*要求:一、电话号码由数字、"("、")"和"-"构成二、电话号码为3到8位三、如果电话号码中包含有区号,那么区号为三位或四位四、区号用"("、")"或"-"和其他部分隔开用途:检查输入的电话号码格式是否正确输入:strPhone:字符串返回:如果通过验证返回true,否......
  • Java拓展-拆,装箱,线程,反射
    导言:在学习JavaSE的时候,我们会使用Java基础编程,并且了解了什么是面向对象的编程,会使用Java写一些基础算法程序,接下来,我们需要了解Java的自动拆箱和自动装箱,单线程和多线程,反射是什么,值得注意的是,讲的是Java中的特性,但是OOP语言其实都是用这些操作的,只是小部分不同罢了一.自动拆......
  • 简易java分页标签
    简易java分页标签1,标签的实现类NumenTag.javajava代码 1.importjava.util.ArrayList;2.importjava.util.HashMap;3.importjava.util.List;4.importjava.util.Map;5.6.importjavax.servlet.jsp.JspException;7.impor......
  • Javascript动态修改select选项
    1、向Select里添加OptionJs代码1.//IEonly,FF不支持Add方法2.functionfnAddItem(text,value){3.varselTarget=document.getElementById("selID");4.selTarget.Add(newOption("text","value"));5.}6.......
  • Javascript: setTimeout()使用及 setInterval()使用
    Javascript:setTimeout()使用及setInterval()使用2006-10-1203:36Evaluatesanexpressionafteraspecifiednumberofmillisecondshaselapsed.(在指定时间过后执行指定的表达式) Syntax:iTimerID=window.setTimeout(vCode,iMilliSeconds[,sLanguage])ParametersvCod......
  • JAVA的springboot+vue学习平台管理系统,校园在线学习管理系统,附源码+数据库+论文+PPT
    1、项目介绍在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括学习平台的网络应用,在外国学习平台已经是很普遍的方式,不过国内的管理平台可能还处于起步阶段。学习平台具有学习信息管理功能的选择。学习平台采用java技术,基于springboot框架,mysql数据库进行......
  • Java高级技术、Junit单元测试框架入门
          ......