談談接口和抽象類有什么區別?

接口(interface)和抽象類(abstract class)都是 Java 中常用的“抽象”工具,用來定義類的規范和結構,但它們有一些本質的區別。下面我用一個簡單明了的表格 + 說明來幫你理解:

對比點抽象類(Abstract Class)接口(Interface)
關鍵詞abstract classinterface
是否可包含實現? 可以有方法實現、構造函數、成員變量?(Java 8 之后可以用 defaultstatic 方法)
多繼承支持? 只能繼承一個抽象類? 可以實現多個接口
使用場景表示“是一個什么”關系(is-a)表示“能做什么”能力(can-do)
構造函數? 有構造函數? 沒有構造函數
狀態(字段)? 可以有成員變量🚫 接口中的變量默認是 public static final 常量

簡單舉例:

抽象類例子
abstract class Animal {String name;abstract void makeSound();void sleep() {System.out.println("Sleeping...");}
}
接口例子
interface Flyable {void fly();
}

如果你寫一個 Bird 類,可以這樣組合:

class Bird extends Animal implements Flyable {void makeSound() {System.out.println("Chirp");}public void fly() {System.out.println("Flying high!");}
}

總結口訣:

  • 抽象類像模板,可以提供一部分默認實現;
  • 接口像協議,只規定規則,不管怎么實現;
  • 想讓一個類**“擁有某種能力”**,用接口;
  • 想讓一個類**“繼承某種通用結構”**,用抽象類。

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

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

相關文章

使用Nacos 打造微服務配置中心

一、背景介紹 Nacos 作為服務注冊中心的使用方式,同時 Nacos 還可以作為服務配置中心,用于集中式維護各個業務微服務的配置資源。 作為服務配置中心的交互流程圖如下。 這樣設計的目的,有一個明顯的好處就是:有利于對各個微服務…

OpenCv高階(十一)——物體跟蹤

文章目錄 前言一、OpenCV 中的物體跟蹤算法1、均值漂移(Mean Shift):2、CamShift:3、KCF(Kernelized Correlation Filters):4、MIL(Multiple Instance Learning)&#xf…

聲音分離人聲和配樂base,vocals,drums -從頭設計數字生命第6課, demucs——仙盟創夢IDE

demucs -n htdemucs --two-stemsvocals 未來之窗.mp3 demucs -n htdemucs --shifts5 之.mp3demucs -n htdemucs --shifts5 -o wlzcoutspl 未來之窗.mp3 伴奏提取人聲分離技術具有多方面的重大意義,主要體現在以下幾個領域: 音樂創作與制作 創作便利…

使用若依二次開發商城系統-4:商品屬性

功能3:商品分類 功能2:商品品牌 功能1:搭建若依運行環境前言 商品屬性功能類似若依自帶的字典管理,分兩步,先設置屬性名,再設置對應的屬性值。 一.操作步驟 1)數據庫表product_property和pro…

操作指南:vLLM 部署開源大語言模型(LLM)

vLLM 是一個專為高效部署大語言模型(LLM)設計的開源推理框架,其核心優勢在于顯存優化、高吞吐量及云原生支持。 vLLM 部署開源大模型的詳細步驟及優化策略: 一、環境準備與安裝 安裝 vLLM 基礎安裝:通過 pip 直接安裝…

32.768kHz晶振詳解:作用、特性及與其他晶振的區別

一、32.768kHz晶振的核心作用 實時時鐘(RTC)驅動: 提供精確的1Hz時鐘信號,用于計時功能(如電子表、計算機CMOS時鐘)。 分頻公式: 1Hz 32.768kHz / 2^15(通過15級二分頻實現&#x…

第3講、大模型如何理解和表示單詞:詞嵌入向量原理詳解

1. 引言 大型語言模型(Large Language Models,簡稱LLM)如GPT-4、Claude和LLaMA等近年來取得了突破性進展,能夠生成流暢自然的文本、回答復雜問題、甚至編寫代碼。但這些模型究竟是如何理解人類語言的?它們如何表示和處…

【Java面試筆記:進階】19.Java并發包提供了哪些并發工具類?

Java 并發包(java.util.concurrent)提供了一系列強大的工具類,用于簡化多線程編程、提升并發性能并確保線程安全。 1. Java 并發包的核心內容 并發包概述:java.util.concurrent 包及其子包提供了豐富的并發工具類,用于簡化多線程編程。主要組成部分: 高級同步結構:如 C…

Matlab數字信號處理——小波閾值法去噪分析系統

🔧 系統簡介 本系統通過 MATLAB GUI 圖形界面,集成了 小波閾值去噪算法 的各個核心模塊,可以實現以下功能: 打開語音文件:支持常見音頻格式讀取; 模擬加噪:系統內置白噪聲模擬功能&#xff0…

EDI 如何與 ERP,CRM,WMS等系統集成

在數字化浪潮下,與制造供應鏈相關產業正加速向智能化供應鏈轉型。傳統人工處理訂單、庫存和物流的方式已難以滿足下單客戶對響應速度和數據準確性的嚴苛要求。EDI技術作為企業間數據交換的核心樞紐,其與ERP、CRM、WMS等業務系統的深度集成,成…

計算機組成原理-408考點-數的表示

常見題型:C語言中的有符號數和無符號數的表示。 【例】有如下C語言程序段: short si-32767;unsigned short usisi;執行上述兩條語句后,usi的值為___。short和unsigned short均使用16位二進制數表示。 【分析】考點:同…

企業級AI開發利器:Spring AI框架深度解析與實戰

企業級AI開發利器:Spring AI框架深度解析與實戰 一、前言:Java生態的AI新紀元 在人工智能技術爆發式發展的今天,Java開發者面臨著一個新的挑戰:如何將大語言模型(LLMs)和生成式AI(GenAI&#…

【金倉數據庫征文】——選擇金倉,選擇勝利

目錄 第一部分:金倉數據庫——開創數據庫技術的新時代 1.1 金倉數據庫的技術底蘊 1.2 高可用架構與災備能力 1.3 分布式架構與彈性擴展能力 第二部分:金倉數據庫助力行業數字化轉型 2.1 電信行業:核心系統國產化替代 2.2 醫療行業&…

用C語言實現——一個中綴表達式的計算器。支持用戶輸入和動畫演示過程。

一、思路概要和知識回顧 1.思路概要 ①中綴表達式計算: 需要處理運算符的優先級,可能需要用到棧結構。 ??如何將中綴表達式轉換為后綴表達式?或者直接計算? 通常,中綴轉后綴(逆波蘭式)再…

Langchain_Agent+數據庫

本處使用Agent數據庫,可以直接執行SQL語句。可以多次循環查詢問題 前文通過chain去聯系數據庫并進行操作; 通過鏈的不斷內嵌組合,生成SQL在執行SQL再返回。 初始化 import os from operator import itemgetterimport bs4 from langchain.ch…

Python 爬蟲如何偽裝 Referer?從隨機生成到動態匹配

一、Referer 的作用與重要性 Referer 是 HTTP 請求頭中的一個字段,用于標識請求的來源頁面。它在網站的正常運行中扮演著重要角色,例如用于統計流量來源、防止惡意鏈接等。然而,對于爬蟲來說,Referer 也可能成為被識別為爬蟲的關…

Post-Processing PropertySource instance詳解 和 BeanFactoryPostProcessor詳解

PropertySourcesBeanFactoryPostProcessor詳解 1. 核心概念 BeanFactoryPostProcessor 是 Spring 框架中用于在 BeanFactory 初始化階段 對 Environment 中的 PropertySource 進行后處理的接口。它允許開發者在 Bean 創建之前 對屬性源進行動態修改,例如添加、刪除…

[C]基礎13.深入理解指針(5)

博客主頁:向不悔本篇專欄:[C]您的支持,是我的創作動力。 文章目錄 0、總結1、sizeof和strlen的對比1.1 sizeof1.2 strlen1.3 sizeof和strlen的對比 2、數組和指針筆試題解析2.1 一維數組2.2 字符數組2.2.1 代碼12.2.2 代碼22.2.3 代碼32.2.4 …

賽靈思 XCKU115-2FLVB2104I Xilinx Kintex UltraScale FPGA

XCKU115-2FLVB2104I 是 AMD Xilinx Kintex UltraScale FPGA,基于 20 nm 先進工藝,提供高達 1 451 100 個邏輯單元(Logic Cells),77 721 600 bit 的片上 RAM 資源,以及 5 520 個 DSP 切片(DSP48E…

CAPL編程_03

1_文件操作的相關函數: 讀文本文件內容 讀取文本文件操作的三部曲 1)打開文件 —— openFileRead ( ) 2)逐行讀取 —— fileGetString ( ) 、fileGetStringSZ ( ) 3)關閉文件 —— fileClose ( ) char content[100];…