Java進階----接口interface

接口

接口概述

  • 接口是一種規范,使用接口就代表著要在程序中制定規范.

制定規范可以給不同類型的事物定義功能,例如:

  • 利用接口,給飛機、小鳥制定飛行規范,讓其都具備飛行的功能;
  • 利用接口,給鼠標、鍵盤、音響制定連接規范,讓其都具備連接的功能;

接口制定規范通常只規定有哪些功能,不限制功能的具體內容。需要由遵循規范的事物自己去實現,例如:

  • 飛行規范只是讓飛機、小鳥具備飛行的功能,但具體怎么飛,由它們自己決定
  • 連接規范只是讓鼠標、鍵盤、音響都擁有可以被連接的功能,但具體怎么連接,由它們自己決定

接口的定義格式

public interface Inter {   // 常量// 抽象方法}

注意:

  1. 接口中的變量必須是常量,默認被 public static final 修飾
  2. 接口中的方法默認是抽象方法,默認被 public
    abstract
    修飾
  3. 接口不能創建對象

接口的使用方式

接口是用來被類實現(implements)的,實現接口的類稱為實現類。實現類可以理解成所謂的子類

  • 接口可以被類單實現,也可以被類多實現
  • 注意:一個類實現接口,必須重寫完全部接口的全部抽象方法,否則這個類需要定義成抽象類
修飾符 class 實現類 implements 接口1, 接口2, 接口3 , ... {……
}

接口和抽象類的區別

  1. 一個類只能繼承一個抽象類,一個類可以實現多個接口。
  2. 繼承父類和實現接口并不沖突,可以同時使用。
  3. 功能上:抽象類是對同一類型事物的抽取
    (例如:貓和狗),接口是對不同類型事物具有相同行為的規范。
    實例1:
public class Demo01 {public static void main(String[] args) {//需求:定義一個數學接口MathInter,給其定義成員變量PI(圓周率)和成員方法add(加法)//1.定義好接口后,嘗試創建MathInter對象,代碼報錯(接口不能創建對象)//new MathInter();//2.使用MathInter提供的圓周率System.out.println(MathInter.PI);//3.嘗試修改圓周率//MathInter.PI = 6.66;//4.要想使用接口,需要定義類去實現接口//定義Computer電腦類,實現Math數學接口//5.創建實現類對象,調用重寫的方法Computer computer = new Computer();computer.add(1, 2);//6.需求:再定義一個播放接口PlayerInter,制定播放規范,讓Computer去實現computer.play();}
}
public interface MathInter {//2.要求有圓周率提供給其他人使用//public static final double PI = 3.14;//注意:接口中的成員變量只能是常量,默認被 public static finaldouble PI = 3.14;//3.要求有加法//public abstract void add(int a, int b);//接口中的方法默認就被 public abstract修飾void add(int a, int b);
}
public interface PlayerInter {void play();
}
public class Computer implements MathInter, PlayerInter {//2.類實現接口,必須要重寫接口的所有抽象方法!@Overridepublic void add(int a, int b) {System.out.println("加法結果:" + (a + b));}@Overridepublic void play() {System.out.println("播放小視頻");}
}

實例二:
定義USB接口制定規范,要求所有USB設備都擁有接入(connect)和斷開(disconnect)功能

  • 定義Mouse鼠標類和Keyboard鍵盤類,要求實現USB接口,遵循USB制定的規范
  • Mouse鼠標的特有功能:點擊(click)
  • Keyboard鍵盤的特有功能:打字( typewrite )

1.定義UsbInter接口,制定規則:接入(connect)和斷開(disconnect)

public interface UsbInter {void connect();void disconnect();
}

2.定義鼠標Mouse類和鍵盤Keyboard類作為接口實現類,重寫接口的方法

public class Keyboard implements UsbInter {@Overridepublic void connect() {System.out.println("接入鍵盤");}@Overridepublic void disconnect() {System.out.println("斷開鍵盤");}//2.特有功能:打字public void typewrite() {System.out.println("鍵盤敲爛,月薪過萬!");}
}public class Mouse implements UsbInter{@Overridepublic void connect() {System.out.println("鼠標連接");}public void Click(){System.out.println("鼠標點擊");}@Overridepublic void disconnect() {System.out.println("鼠標斷開");}}

3.分別創建Mouse鼠標對象和Keyboard鍵盤對象

public class Demo02 {public static void main(String[] args) {Mouse mouse = new Mouse();Keyboard keyboard = new Keyboard();//依次調用usb的接入方法、各自特有的方法、usb的斷開方法mouse.connect();mouse.click();mouse.disconnect();System.out.println("-----------------");keyboard.connect();keyboard.typewrite();keyboard.disconnect();}
}

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

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

相關文章

SMU Summer 2024 Contest Round 1

A.Hcode OnlineJudge 給出一個N面骰子和整數K,擲出1-N之間的每個數的概率相同,每次擲出一次,記為成績,若成績小于K,則開始拋硬幣,硬幣朝上則數翻倍,反之則為0,概率都為0.5。當數大于…

自動駕駛算法———車道檢測(一)

“ 在本章中,我將指導您構建一個簡單但有效的車道檢測管道,并將其應用于Carla 模擬器中捕獲的圖像。管道將圖像作為輸入,并產生車道邊界的數學模型作為輸出。圖像由行車記錄儀(固定在車輛擋風玻璃后面的攝像頭)捕獲。…

【ZIP壓縮大揭秘】輕松掌握ZIP分卷壓縮包的高效解壓秘籍!

在這個信息爆炸的時代,文件大小常常成為我們分享與存儲的絆腳石。幸運的是,ZIP分卷壓縮技術如同一把鑰匙,巧妙地將龐然大物分解成小巧易管理的部分。但面對這一串分卷壓縮包,你是否也曾迷茫于如何高效解壓,恢復文件的完…

解碼Python字符串:‘r‘、‘b‘、‘u‘和‘f‘前綴的全面指南

📖 正文 1 字符串前加’r’ 表示原始字符串,消除轉義 print(abc\nde) # abc # deprint(rabc\nde) # abc\nde在下面這個列子中,如果不在路徑字符串前面加r那么,路徑中的空格就會出現問題 print(rD:\01 programming\09python\py…

全志A527 T527 cat /proc/cupinfo沒有Serial問題

1.前言 我們有些客戶是使用cpuinfo節點去獲取系統的cpuid的,如下: cat /proc/cupinfo processor : 0 BogoMIPS : 48.00 Features : fp asimd evtstrm aes pmull sha1 sha2 crc32 atomics fphp asimdhp cpuid asimdrdm lrcpc dcpop asimddp CPU impleme…

系統吃swap問題排查

目錄 背景 問題 分析并解決 1.控制線程數 2.更換IO組件 3.Linux進程信息文件分析 總結加餐 參考文檔 背景 隔壁業務組系統是簡單的主從結構,寫索引的服務(主)叫primary, 讀索引并提供搜索功能的服務(從)叫replica。業務線同步數據并不是平滑的&…

離散化及其在 Pandas 中的實現方法

目錄 1.什么是離散化? 2.離散化類型 3.示例代碼 3.1連續變量離散化 3.2定性變量離散化 4.運行結果 4.1連續變量離散化 4.2定性變量離散化 1.什么是離散化? 離散化是將連續數據或分類數據轉換為離散類別的過程,方便后續的數據分析和機…

static的理論學習

在說到static之前,需要先明確變量類型: 而在聊到變量類型之前我們可以將變量的兩個屬性好好學一學 變量的兩個屬性 作用域(scope): 從內存的角度來看,就是變量存放在棧(stack)中&…

在 JavaScript 中,??(雙問號運算符)和 ?.(可選鏈運算符)區別

在 JavaScript 中,??(雙問號運算符)和 ?.(可選鏈運算符)是兩種不同的運算符,用于處理不同的情況: 雙問號運算符 (??): ?? 運算符是空值合并運算符(Nullish Coalescing Oper…

Android C++系列:Linux進程(一)

1. 進程概念 我們知道,每個進程在內核中都有一個進程控制塊(PCB)來維護進程相關的信 息,Linux內核的進程控制塊是task_struct結構體。現在我們全面了解一下其中都有哪 些信息。 進程id。系統中每個進程有唯一的id,在C語言中用pid_t類型表示,其實就是一個非 負整數。進程的…

TypeError: Cannot read properties of null (reading ‘nextSibling‘)

做項目用的Vue3Vite, 在畫靜態頁面時,點擊菜單跳轉之后總是出現如下報錯,百思不得其解。看了網上很多回答,也沒有解決問題,然后試了很多方法,最后竟然發現是template里邊沒有結構的原因。。。 原來我的index.vue是這樣…

android.bp 編譯 順序

在Android平臺上,.bp 文件是用來定義Android編譯系統中的編譯規則的。Android編譯系統是基于Blueprint的,.bp 文件中定義的規則決定了如何編譯和打包應用程序。 在Android編譯系統中,.bp 文件中的規則通常是按照它們在文件中的順序來執行的。…

ELK+Filebeat+Kafka+Zookeeper

本實驗基于ELFK已經搭好的情況下 ELK日志分析 架構解析 第一層、數據采集層 數據采集層位于最左邊的業務服務器集群上,在每個業務服務器上面安裝了filebeat做日志收集,然后把采集到的原始日志發送到Kafkazookeeper集群上。第二層、消息隊列層 原始日志發…

conda和pip

1.眾所周知,pip的確是python官方(PyPA)推薦的Python軟件包安裝管理工具,在安裝Python軟件包時,第一反應應該是pip。正是由于pip是Python官方推薦的“正統”工具,所以pip只專注于Python軟件包之間的依賴&…

Matlab手搓線性回歸-非正規方程法

原理:wxb,x是輸入,求得的結果與真實值y求均方誤差。 采用鏈式法則求導 參數更新,梯度下降法(批量梯度下降) 隨機生成數據: m100;生成100個數據,并添加隨機噪聲 clear; …

基于flask的貓狗圖像預測案例

📚博客主頁:knighthood2001 ?公眾號:認知up吧 (目前正在帶領大家一起提升認知,感興趣可以來圍觀一下) 🎃知識星球:【認知up吧|成長|副業】介紹 ??如遇文章付費,可先看…

二次元轉向SLG,B站游戲的破圈之困

文 | 螳螂觀察 作者 | 夏至 2023年是B站游戲的滑鐵盧,盡管這年B站的游戲營收還有40多億,但相比去年大幅下降了20%,整整少了10億,這是過去5年來的最大跌幅,也是陳睿接管B站游戲業務一年以來,在鼻子上碰的第…

鴻蒙語言基礎類庫:【@ohos.process (獲取進程相關的信息)】

獲取進程相關的信息 說明: 本模塊首批接口從API version 7開始支持。后續版本的新增接口,采用上角標單獨標記接口的起始版本。開發前請熟悉鴻蒙開發指導文檔:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md點擊或者復制轉到。…

昇思13天

ResNet50遷移學習 ResNet50遷移學習總結 背景介紹 在實際應用場景中,由于訓練數據集不足,很少有人會從頭開始訓練整個網絡。普遍做法是使用在大數據集上預訓練得到的模型,然后將該模型的權重參數用于特定任務中。本章使用遷移學習方法對Im…

放棄華為OD,選擇最合適而不是最難得

時間不知不覺邁入了七月,五月嘗試去重新找一份工作,但釋放出來的崗位太少了,難得有進華為OD的機會,還是比較核心的部門,但思來想起,還是放棄了。 如果想去,是很有機會的,一路過關斬…