每日一練編程題:今天是【接口,多態】

設計程序 :

  • 電腦類的屬性USB接口數組 : 有3個usb插口
  • 電腦類的功能 :
  1. 通過接口插入外設 (u盤,麥克風,鍵盤等)
    addUSB(USB usb) {
    }
  2. 開機
    要求: 電腦開機前,先啟動外設
  3. 關機
    要求: 電腦關機前,先關閉外設
  • 外設類(u盤,麥克風,鍵盤等)
    功能 : 啟動 關閉
    USB接口
    定義usb設備的統一功能
    開啟() 關閉()
  • 效果 :
    創建電腦對象,能插入外設,調用方法電腦開機,電腦開機前 外設啟動,
    電腦關機前,外設先關閉

UML類圖

在這里插入圖片描述

參考代碼

Usb接口
package day529.homework;
/**
* Description: Usb接口
* date: 2024/5/29 20:51
* @author: LiCoffee
* @since JDK 1.8
*/public interface Usb {void open(); //打開外接設備void close(); //關閉外接設備
}
UDisk 類實現 Usb 接口
package day529.homework;public class UDisk implements Usb{@Overridepublic void open() {System.out.println("打開U盤");}@Overridepublic void close() {System.out.println("關閉U盤");}
}
Keyboard 類實現 Usb 接口
package day529.homework;public class Keyboard implements Usb{@Overridepublic void open() {System.out.println("打開鍵盤");}@Overridepublic void close() {System.out.println("關閉鍵盤");}
}
Keyboard 類實現 Usb 接口
package day529.homework;public class Microphone implements Usb{@Overridepublic void open() {System.out.println("打開麥克風");}@Overridepublic void close() {System.out.println("關閉麥克風");}
}
Computer 類
package day529.homework;
/**
* Description: 電腦類
* date: 2024/5/29 20:44
* @author: LiCoffee
* @since JDK 1.8
*/public class Computer {private int interfaceNum; //電腦接口數量private Usb[] usbs;      //接口數組/*** @descriptions 無參構造方法,默認為三個接口* @author LiCoffee* @date 2024/5/29 20:43**/public Computer() {this(3);usbs = new Usb[interfaceNum];//定義接口數量}/*** @descriptions 有參構造方法,個性化定制接口數量* @author LiCoffee* @date 2024/5/29 20:47* @param interfaceNum - 傳入接口數量**/public Computer(int interfaceNum) {this.interfaceNum = interfaceNum;usbs = new Usb[interfaceNum];}public int getInterfaceNum() {return interfaceNum;}public void setInterfaceNum(int interfaceNum) {this.interfaceNum = interfaceNum;}/*** @descriptions 插入設備* @author LiCoffee* @date 2024/5/29 20:48* @param usb -插入設備類型**/public void addUsb(Usb usb){for (int i = 0; i < usbs.length; i++) {if (usbs[i] == null) {usbs[i] = usb;break;}}}/*** @descriptions 打開電腦* @author LiCoffee* @date 2024/5/29 20:50**/public void open(){System.out.println("電腦打開");for (int i = 0; i < usbs.length; i++) {if (usbs[i] == null) {  //防止空指針異常break;}usbs[i].open();}}/*** @descriptions 關閉電腦* @author LiCoffee* @date 2024/5/29 20:50**/public void close(){for (int i = 0; i < usbs.length; i++) {if (usbs[i] == null) {  //防止空指針異常break;}usbs[i].close();}System.out.println("電腦關閉");}
}
Test 測試類
package day529.homework;public class Test {public static void main(String[] args) {Computer computer = new Computer(); //創建電腦computer.addUsb(new Keyboard());    //插入接口computer.addUsb(new Microphone()); //插入接口computer.addUsb(new UDisk());     //插入接口computer.open();    //打開電腦computer.close();   //關閉電腦}}

最后

如果感覺有收獲的話,點個贊 👍🏻 吧。
??????本人菜鳥修行期,如有錯誤,歡迎各位大佬評論批評指正!😄😄😄

💘💘💘如果覺得這篇文對你有幫助的話,也請給個點贊、收藏下吧,非常感謝!👍 👍 👍在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/20098.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/20098.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/20098.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python多種方式 保留小數點位數(附Demo)

目錄 前言1. 字符串格式2. round函數3. Decimal模塊4. numpy庫5. Demo 前言 在Python中&#xff0c;保留小數點后特定位數可以通過多種方式實現 以下是幾種常見的方法&#xff0c;并附上相應的代碼示例&#xff1a; 使用字符串格式化&#xff08;String Formatting&#xff…

IDE集成開發環境

IDE集成開發環境&#xff0c;全稱“Integrated Development Environment” 介紹 定義&#xff1a; IDE是用于提供程序開發環境的應用程序&#xff0c;它集成了代碼編寫功能、分析功能、編譯功能、調試功能等一體化的開發軟件服務套。 組成部分&#xff1a; IDE通常包括代碼編…

Ubuntu20.04 Mysql基本操作知識

#Mysql基本知識 運行環境Ubuntu20.04 1.開啟mysql服務 sytemctl start mysql不然&#xff0c;命令行進入myql交互行提交命令后&#xff0c;就會出現4200錯誤。 2.顯示所有數據庫 SHOW DATABASES;注意復數s&#xff0c;畢竟很多數據庫 3.新建數據庫test CREATE DATABASE …

【學習筆記】計算機組成原理(九+十)

控制單元的功能 文章目錄 控制單元的功能9.1 微操作命令的分析9.1.1 取指周期9.1.2 間址周期9.1.3 執行周期9.1.4 中斷周期 9.2 控制單元的功能9.2.1 控制單元的外特性9.2.2 控制信號舉例9.2.3 多級時序系統9.2.4 控制方式 控制單元的設計10.1 組合邏輯設計10.1.1 組合邏輯控制…

LabVIEW與Simulink的通信及調用方式

LabVIEW和Simulink可以通過多種方式進行通信和集成&#xff0c;實現數據交互和功能調用。常見的通信方式包括TCP/IP、UDP、共享內存等&#xff0c;此外還可以利用MATLAB Script Node和S-Function等直接調用對方的功能。這些方法使得LabVIEW和Simulink能夠協同工作&#xff0c;充…

[Algorithm][動態規劃][子序列問題][最長遞增子序列的個數][最長數對鏈]詳細講解

目錄 1.最長遞增子序列的個數1.題目鏈接2.算法原理詳解3.代碼實現 2.最長數對鏈1.題目鏈接2.算法原理詳解3.代碼實現 1.最長遞增子序列的個數 1.題目鏈接 最長遞增子序列的個數 2.算法原理詳解 注意&#xff1a;本題思路和思維方式及用到的方法很值得考究&#xff0c;個人感…

dubbo復習:(18)服務端Filter

用來在服務響應返回到客戶端之前進行額外處理。 一、定義Filter package cn.edu.tju.config;import org.apache.dubbo.rpc.Filter; import org.apache.dubbo.rpc.Result; import org.apache.dubbo.rpc.Invoker; import org.apache.dubbo.rpc.Invocation; import org.apache.du…

大量path計算優化方案

1.影響path基礎屬性數據做key緩存&#xff0c;緩存的path應去除坐標變換&#xff0c;歸一化。基礎屬性應滿足CAB, BC-A 2.高頻path操作以&#xff08;keykey操作&#xff09;做新key緩存。 3.高頻修改高級屬性&#xff0c;以新key屬性變更做新key緩存。 4.key與id做中轉映射&am…

redis修改密碼

基于鏡像部署 其實在dockerhub上都有寫 redsi 配置文件從哪找呢? 答案是&#xff1a;從官網或者從github上的release里找到你需要的對應版本解壓后有配置文件 配置文件路徑在哪呢 用redis-server /etc/redis/redis.conf 去指定啟動使用的配置文件 好那么接下來就是一些簡單的…

ad18學習筆記20:焊盤設置Solder Mask Expansion(阻焊層延伸)

【AD18新手入門】從零開始制造自己的PCB_ad18教程-CSDN博客 Altium Designer繪制焊盤孔&#xff08;Pad孔&#xff09;封裝庫的技巧&#xff0c;包括原理圖封裝和PCB封裝_嗶哩嗶哩_bilibili 默認的焊盤中間是有個過孔的&#xff0c;單層焊盤&#xff08;表貼燭盤&#xff09;…

工作流 Activiti7 初始

文章目錄 ??1.1 Activiti 介紹??1.2 Activiti 開發流程??1.3 BPMN 2.0 規范是什么??1.4 BPMN 2.0 基本流程符號????1.4.1 事件 Event????1.4.2 活動????1.4.3 網關 Gateway ??1.5 Activiti API 服務接口????1.5.1 核心Service接口及其獲取 ??1.1 A…

AI科普:TensorFlow 的基本概念和使用場景

TensorFlow是一個開源的深度學習框架&#xff0c;由Google開發并于2015年發布。它提供了一個使用數據流圖進行數值計算的接口&#xff0c;可以在不同的硬件平臺上運行&#xff0c;包括CPU、GPU和TPU。 TensorFlow的核心概念是張量&#xff08;Tensor&#xff09;和計算圖&…

fps游戲如何快速定位矩陣

fps游戲如何快速定位矩陣 矩陣特點: 1、第一行第一列值的范圍在**-1 ---- 1**之間&#xff0c;如果開鏡之后值會變大。 2、第一行第三列的值始終為 0。 3、第一行第四列 的值比較大 &#xff0c; >300或者**<-300**。 根據這三個特點&#xff0c;定位矩陣已經足夠了…

centos7.9離線安裝mysql5.7

centos7.9離線安裝mysql5.7 查詢mysql查詢組查詢用戶不存在創建即可&#xff0c;創建mysql用戶組上傳下載的安裝包創建my.cnf文件修改配置文件修改mysql登陸密碼 centos7.9 mysql5.7 查詢mysql rpm -qa | grep mysql我這里查詢是不存在&#xff0c;如果你的存在可以用rm -rf […

11- Redis 中的 SDS 數據結構

字符串在 Redis 中是很常用的&#xff0c;鍵值對中的鍵是字符串類型&#xff0c;值有時也是字符串類型。 Redis 是用 C 語言實現的&#xff0c;但是它沒有直接使用 C 語言的 char* 字符數組來實現字符串&#xff0c;而是自己封裝了一個名為簡單動態字符串&#xff08;simple d…

ubuntu22 部署zookeeper + kafka集群 配置開機自啟動

ufw disabled #關閉防火墻 或者 放開指定端口 vim /etc/hosts #配置ip host映射關系 10.3.1.96 node1 10.3.1.97 node2 #1.所有機器安裝jdk apt install openjdk-8-jdk -y java -version #export JAVA_HOME/usr/lib/jvm/jdk1.8.0_202 #2.部署zookeeper集群 cd /usr…

【spring】Spring Boot3.3.0發布啦

spring最新版本 springboot官網&#xff1a;Spring Boot :: Spring Boot Spring Boot 3.3 發行說明&#xff1a;https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-3.3-Release-Notes 開發環境的要求對比表 Spring BootJDKSpringMavenGradle3.3.017 ~ 226.1…

Mac電腦pd虛擬機專用windows系統鏡像(m1/intel)win10、11鏡像文件

入手了Mac電腦后&#xff0c;由于需要用到Windows軟件&#xff0c;又嫌安裝雙系統太復雜&#xff0c;這時候Mac就用到了安裝虛擬機&#xff0c;目前最好用的虛擬機是Parallels Desktop&#xff0c;win鏡像版本要根據自己的喜好選對&#xff0c;在此提供分別兼容M1和Intel的win1…

PS Mac Photoshop 2024 for Mac[破]圖像處理軟件[解]PS 2024安裝教程[版]

Mac分享吧 文章目錄 效果一、準備工作二、開始安裝1、Anticc簡化版安裝1.1雙擊運行軟件&#xff0c;安裝1.2 解決來源身份不明的開發者問題**此代碼為打開&#xff1a;系統偏好設置 – 隱私與安全性&#xff0c;中的【任何來源】&#xff0c;如下圖&#xff1a;**1.3 再次運行…

11Linux學習筆記

Linux 實操篇 目錄 文章目錄 Linux 實操篇1.rtm包&#xff08;軟件&#xff09;1.1 基本命令1.2 基本格式1.3安裝rtm包1.4卸載rtm包 2.apt包2.1 基本命令結構2.2 常用選項2.3常用命令 1.rtm包&#xff08;軟件&#xff09; 1.1 基本命令 1.2 基本格式 1.3安裝rtm包 1.4卸載r…