Java中繼承接口和實現接口的區別、接口和抽象類的區別、并理解關鍵字interface、implements

初學者容易把繼承接口和實現接口搞混,專門整理一下,順便簡單介紹一下interface、implements關鍵字。

繼承接口和實現接口的區別、接口的特點

  1. 繼承接口是說的只有接口才可以繼承接口,是接口與接口間的。實現接口是說的接口與類之間,類不可以繼承接口,但類可以實現接口。
  2. 一個接口可以繼承一個或多個接口。 接口繼承接口可以不實現父接口中的方法,可以聲明自己的新方法
public interface InterfaceA extends InterfaceB,InterfaceC{}
  1. 一個實現類可以實現一個或者多個接口。 類實現接口時,一定要實現接口中聲明的方法,如果接口中沒有定義抽象方法則不需要,但是要注意,類實現了一個接口A,如果B是A的父接口,且B中有抽象方法,則該類必須實現A和B中的所有抽象方法。
public class InterfaceImpl implements InterfaceA,InterfaceB{}
  1. 一個子類可以繼承一個父類的同時實現一個或者多個接口(一個類只能繼承一個類,不能繼承多個類)
public class Zi extends Fu implements  InterfaceA,InterfaceB{}
  1. 抽象方法只能定義在抽象類中,抽象類實現接口,可以不實現接口中的抽象方法。

接口和抽象類的區別

相同點

  1. 都位于繼承體系的頂端,用于被其他類實現或者繼承
  2. 都不能new
  3. 都包含抽象方法,其子類或者實現類都必須重寫這些抽象方法

不同點

  1. 抽象類:一般作為父類使用,可以有成員變量,構造,成員方法,抽象方法等
  2. 接口:成員單一,一般抽取接口,抽取的都是方法,視為功能的大集合
  3. 類不能多繼承,但是接口可以多繼承

下面來詳細介紹下接口及其中的關鍵字

接口

接口是一個引用數據類型,是一種標準規則,用關鍵字interface來實現。

interface

下面是定義接口

public interface 接口名{ }

implements

implements是類用來實現接口的關鍵字

使用:

  1. 實現類實現接口
  2. 重寫接口中的抽象方法
  3. 創建實現類對象(接口不能直接new對象)
  4. 調用重寫的方法
public interface Animal{public abstract void eat();
}
public class Tiger implements Animal{@Overridepublic void eat() {System.out.println("老虎吃東西");}
}

接口中定義的成員

一、成員變量

final代表最終的,被它修飾的變量,不能二次賦值,可以視為常量

public static final 數據類型 變量名 =

特點
1、不寫public static final 默認也有
2、接口名直接調用
3、被static final修飾的成員變量需要手動賦值
4、習慣上我們會將static final修飾的成員變量名大寫

public interface Animal{public static final int NUM1 = 666;int NUM2 = 666;//不寫public static final 默認也有
}
public class Test {public static void main(String[] args) {System.out.println(Animal.NUM1);}
}

二、抽象方法

格式:

public abstract 返回值類型 方法名(形參);

使用:

  1. 定義實現類,實現接口
public interface Animal{public abstract void eat();String drink(); //不寫public abstract 默認也有
}
  1. 重寫抽象方法
public class Tiger implements Animal{@Overridepublic void eat() {System.out.println("老虎吃東西");}@Overridepublic String close() {return "老虎喝水";}
}
  1. 創建實現類對象,調用重寫的方法
public class Test01 {public static void main(String[] args) {Mouse tiger= new Tiger();tiger.eat();String result = tiger.drink();System.out.println("result = " + result);}
}

三、默認方法

格式:

  public default 返回值類型 方法名(形參){方法體return 結果}

使用:

  1. 定義實現類,實現接口
public interface Animal {//默認方法public default void methodDef(){System.out.println("我是默認方法");}
}
  1. 默認方法重寫,可以不重寫
public class Tiger implements Animal{@Overridepublic void methodDef(){System.out.println("我是默認方法");}
}
  1. 創建實現類對象,調用默認方法
public class Test {public static void main(String[] args) {Mouse tiger = new Tiger();tiger.methodDef();}
}

四、靜態方法

格式:

public static 返回值類型 方法名(形參){方法體return 結果
} 

使用:接口名直接調用

public interface Animal {//靜態方法public static void methodStatic(){System.out.println("我是靜態方法");}
}
public class Test {public static void main(String[] args) {Animal.methodStatic();}
}

默認方法和靜態方法可以作為臨時加的一個小功能來使用。

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

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

相關文章

Eclipse導入工程提示“No projects are found to import”

如果發現導入工程的時候出現"No projects are found to import" 的提示,首先查看項目目錄中是否有隱藏文件.project,還有目錄結構也還要有一個隱藏文件.classpath, 如果沒有的解決辦法。 方法1:可以把其它項目的.proje…

面試題--SpirngCloud

SpringCloud 有哪些核心組件?(必會) ? Eureka: 注冊中心, 服務注冊和發現 ? Ribbon: 負載均衡, 實現服務調用的負載均衡 ? Hystrix: 熔斷器 ? Feign: 遠程調用 ? Zuul: 網關 ? Spring Cloud Config: 配置中心 (1)Eureka 提供服務注冊和發現, 是注冊中心. 有兩個組…

【最新】App Inventor 2 學習平臺和AI2伴侶使用

1、AppInventor2服務器: 官方服務器:http://ai2.appinventor.edu/ 官方備用服務器:http://code.appinventor.mit.edu/ 國內同步更新服務器:https://www.fun123.cn 國內訪問速度很快,很穩定,文檔是中文的…

Android11 系統/framework層禁止三方應用開機自啟動。

背景介紹:客戶給了定制的launcher,要求在設備上啟動他們的launcher,實現過程中出現的問題是 開機引導還沒走完,launcher就會自己彈出來打斷開機引導,按道理來說launcher是在開機引導結束后,由開機引導通過i…

偏微分方程筆記(駐定與非駐定問題)

橢圓方程可以看成拋物方程 t → ∞ t\rightarrow\infty t→∞的情況。 拋物: 雙曲:

什么是deep supervision?

Deep supervision 是深度學習中的一種技術,通常用于改進模型訓練的效果,尤其是在訓練深度神經網絡時。它通過在模型的多個中間層添加輔助監督信號(即額外的損失函數)來實現。這種方法有助于緩解梯度消失問題,加速收斂&…

DolphinDB 蟬聯 Gartner 中國實時數據管理代表廠商

報!DolphinDB 又上榜啦!!! 上月,全球知名信息技術研究公司 Gartner 發布了 Hype Cycle for Data, Analytics and AI in China, 2024 報告,以技術成熟度曲線(Hype Cycle)和優先級矩陣…

【NLP學習筆記】load_dataset加載數據

除了常見的load_dataset(<hf上的dataset名>)這種方式加載HF上的所有數據外&#xff0c;還有其他custom的選項。 加載HF上部分數據 from datasets import load_dataset c4_subset load_dataset("allenai/c4", data_files"en/c4-train.0000*-of-01024.js…

Spring Boot集成多數據源的最佳實踐

Spring Boot集成多數據源的最佳實踐 大家好&#xff0c;我是免費搭建查券返利機器人省錢賺傭金就用微賺淘客系統3.0的小編&#xff0c;也是冬天不穿秋褲&#xff0c;天冷也要風度的程序猿&#xff01; 為什么需要多數據源&#xff1f; 在實際的應用開發中&#xff0c;有時候…

【C++ Primer Plus學習記錄】函數和C-風格字符串

將字符串作為參數時意味著傳遞的是地址&#xff0c;但可以使用const來禁止對字符串參數進行修改。 假設要將字符串作為參數傳遞給函數&#xff0c;則表示字符串的方式有三種&#xff1a; &#xff08;1&#xff09;char數組 &#xff08;2&#xff09;用引號括起來的字符串常…

航空數據管控系統-②項目分析與設計:任務1:需求分析-項目場景引入

任務描述 知識點&#xff1a;需求分析 重 點&#xff1a;原型設計工具&#xff0c;用例圖&#xff0c;流程圖繪制工具 難 點&#xff1a;功能點的梳理 內 容&#xff1a;完成本次實訓項目的需求分析 先共同討論處本項目的主要功能模塊&#xff0c;并確定每個模塊的負責…

通過卷防水上限,解鎖手機的新玩法?IP68之間亦有不同

當手機的日常防水已經成了基本功&#xff0c;防水能力的上限便成了新的賽道。 畢竟再謹慎的人&#xff0c;也可能會有手滑的時候。這個時候&#xff0c;一臺有著IP68級防水的手機&#xff0c;就能給你提供一份安心。 【IP68是標準上限&#xff0c;不是手機防水上限】 IP68是…

JAVA學習筆記2

一、加號使用 二、數據類型 bit&#xff1a;計算機中的最小存儲單位 byte(字節):計算機中基本存儲單元&#xff0c;1byte8bit 浮點數符號位指數位尾數位 浮點數默認為double類型

2024亞太杯中文賽B題全保姆教程

B題 洪水災害的數據分析與預測 問題 1. 請分析附件 train.csv 中的數據&#xff0c;分析并可視化上述 20 個指標中&#xff0c;哪 些指標與洪水的發生有著密切的關聯&#xff1f;哪些指標與洪水發生的相關性不大&#xff1f;并 分析可能的原因&#xff0c;然后針對洪水的提前預…

Teamviewer刪除可信任設備

目前基本上主流的遠程連接軟件都有限制&#xff0c;要么收費&#xff1b; Teamviewer可信任設備有限&#xff0c;超出限制就會提示錯誤&#xff0c;需要刪除多余的設備才能登陸賬號&#xff01; 需要登陸這個網站 Teamviewer Management console&#xff0c;才能修改&#xff…

基于 STM32 的智能睡眠呼吸監測系統設計

本設計的硬件構成&#xff1a; STM32F103C8T6單片機最小系統板&#xff08;包含3.3V穩壓電路時鐘晶振電路復位電路&#xff08;上電自復位&#xff0c;手動復位&#xff09;&#xff09;&#xff0c;心率傳感器、氣壓傳感器、液晶顯示、按鍵、蜂鳴器、LED燈、藍牙模塊組合而成…

【C++/STL深度剖析】priority_queue 最全解析(什么是priority_queue? priority_queue的常用接口有哪些?)

目錄 一、前言 二、如何區分【優先級隊列】與【隊列】&#xff1f; 三、priority_queue的介紹 四、priority_queue 的構造 五、priority_queue 的常用接口 &#x1f4a7;push &#x1f4a7;pop &#x1f4a7;size &#x1f4a7;top &#x1f4a7;empty &…

YOLOv5改進 | 損失函數 | EIoU、SIoU、WIoU、DIoU、FocuSIoU等多種損失函數

秋招面試專欄推薦 &#xff1a;深度學習算法工程師面試問題總結【百面算法工程師】——點擊即可跳轉 &#x1f4a1;&#x1f4a1;&#x1f4a1;本專欄所有程序均經過測試&#xff0c;可成功執行&#x1f4a1;&#x1f4a1;&#x1f4a1; 專欄目錄&#xff1a; 《YOLOv5入門 …

Nginx-rewrite模塊詳解

文章目錄 前言一、ngx_http_rewrite_module模塊二、指令詳解1.break案例 2. if指令案例 3. return指令案例&#xff1a;return 的優先級 4. rewrite指令案例 5. set指令 總結 前言 nginx一些場景&#xff0c;我們需要使用rewrite模塊。例如域名改了&#xff0c;為了利用網站se…

什么是YUV和IPB,PTS和DTS,視頻編碼解碼過程

YUV 是一種在視頻處理和壓縮中常用的顏色空間。 它將圖像的亮度 (Y) 與色度 (U 和 V) 成分分開。 這種分離對視頻壓縮和廣播非常有益&#xff0c; 因為人眼對亮度變化比對顏色變化更敏感。 YUV 組件簡介 Y (亮度)&#xff1a;表示圖像的亮度或灰度信息。U (色度)&#xff1a;…