Java SE 入門到精通—4.抽象類與接口【Java】

抽象類

同接口一樣,用來約束子類,限制子類必須擁有某些方法,比普通類多了個抽象方法,用抽象方法該類必為抽象類

概念

沒有具體的對象,具體的方法的一個類

abstract關鍵字聲明為抽象類/方法

一個類中有抽象方法則該類必須為抽象類

抽象方法:沒有方法體需要子類重寫使其具有方法體

抽象類不一定要有抽象方法但抽象方法一定在抽象類中

創建對象

抽象類不是具體的,不能直接創建對象而是通過多態形式創建對象

Fu f=Zi z(具體對象);

抽象類的繼承

子類繼承抽象父類,則子類必須重寫父類所有抽象方法或將該子類定義為抽象類

接口

接口本身為抽象類型

用來擴展類的某些方法(后期擴展某些功能),時其類直接實現該接口

用來約束子類行為特征(必須要有某些功能,比抽象類更為純粹,只含有抽象方法)

因為子類繼承抽象類型(接口),所以必須重寫抽象方法,所以該子類間接必須擁有某些方法

創建接口

創建文件時選擇interface類型或者class關鍵字改為interface

接口的實現

接口是抽象類的一種特殊,所以也要使用多態形式創建對象,使用類去實現對象的聲明

類‘’實現’‘接口

類 implements 接口            implements:實現

創建對象

接口以多態形式創建對象

一般用具體對象(實現類)對象去實現(方法最多)(在接口單實現的前提下)

成員變量

接口中的成員變量默認被public static final修飾,所以接口中只存在常量,且是靜態常量

構造方法

接口中沒有構造方法(類繼承object父類實現對象構造)

成員方法

接口中成員方法只能是抽象方法,默認被public abstract修飾

接口中抽象方法類型

抽象方法

返回值 method_name();

默認抽象方法

default

在開發場景中,接口中方法的需求越來越多,如果增加接口中的方法則將改動所有實現類,代碼維護困難,如果子接口繼承,或者實現多個接口,則會導致龐大的接口數量,使項目結構是分復雜,因此java在接口中提出default默認修飾符,被該修飾符修飾的抽象方法擁有方法體,實現類可不重寫直接使用方法,也可以選擇性重寫該方法

[public] default 返回值 method_name(){.......
}默認被public修飾

靜態抽象方法

在實際開發中一個類會實現多個接口,如果這些接口都含有相同的方法,那該如何區分,因此,為了解決這個問題,java提出了靜態抽象方法,具有方法體,只能通過接口名調用靜態方法

[public]static void run(){..........
}默認被public修飾調用靜態方法
}
static void main(String[] args) {Interface_name.method();
}默認被public修飾

私有抽象方法(java9)

在接口的開發中,相同方法中必然存在相同的代碼塊,為了降低代碼耦合,因此需要將珙桐屬性提取出來,而共性是不提供外部使用的

private 返回值 method_name(){........
}

靜態私有抽象方法(java9)

滿足靜態方法的共性調用

private static 返回值 method_name(){.......
}

抽象方法無方法體,但是被默認,靜態,私有修飾時擁有方法體

接口與類的關系

實現關系,類在繼承一個類的同時可以實現多幾個接口

接口與接口的關系

繼承關系,一個接口可以單繼承,可以多繼承,還可以多層繼承


使用接口時一般用具體對象去實現(具體對象方法最多


抽象類與接口的區別

抽象類:和普通類多了該抽象方法,有其他普通方法,變量,可以提供基礎屬性和方法

接口:只有靜態常量和抽象方法,只添加額外特殊方法,更純粹

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

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

相關文章

統計前端傳過來的Req的非空屬性個數的工具類

背景 日常開發中,我們通常會根據前端傳過來的實體類的屬性個數去做邏輯判斷,下面的是判斷屬性個數的工具類。 工具類 public static Integer nonNullFieldCount(Req req) {if (req null) {return 0;}int nonNullFieldCount 0;Field[] fields req.ge…

【Django】Django自定義后臺表單——對一個關聯外鍵對象同時添加多個內容

以官方文檔為例: 一個投票問題包含多個選項,基本的表單設計只能一個選項一個選項添加,效率較低,如何在表單設計中一次性添加多個關聯選項? 示例代碼: from django.contrib import adminfrom .models impo…

Java中的關鍵字有哪些?它們各自的作用是什么?請詳細說明?Java中的訪問修飾符有哪些?它們的訪問權限是怎樣的?

1、Java中的關鍵字有哪些?它們各自的作用是什么?請詳細說明? Java中的關鍵字是預先定義好的,具有特殊含義的標識符,用于表示數據類型、程序結構或控制流程等。以下是Java中的一些常用關鍵字及其作用: abs…

【軟件架構】02-復雜度來源

1、性能 1)單機 受限于主機的CPU、網絡、磁盤讀寫速度等影響 在多線程的互斥性、并發中的同步數據狀態等; 擴展:硬件資源、增大線程池 2)集群 微服務化拆分,導致調用鏈過長,網絡傳輸的消耗過多。 集…

嵌入式Qt 計算器核心算法_3

一.后綴表達式實現算數運算思路 二.算法實現 #include "QCalculatorDec.h"QCalculatorDec::QCalculatorDec() {m_exp "";m_result ""; }QCalculatorDec::~QCalculatorDec() {}bool QCalculatorDec::isDigitOrDot(QChar c) {return ((0 < c)…

基于SpringBoot的景區旅游管理系統

項目介紹 本期給大家介紹一個 景區旅游管理 系統.。主要模塊有首頁&#xff0c;旅游路線&#xff0c;旅行攻略&#xff0c;在線預定。管理員可以登錄管理后臺對用戶進行管理&#xff0c;可以添加酒店&#xff0c;景區&#xff0c;攻略&#xff0c;路線等信息。整體完成度比較高…

一文搞懂match、match_phrase與match_phrase_prefix的檢索過程

一、在開始之前&#xff0c;完成數據準備&#xff1a; # 創建映射 PUT /tehero_index {"settings": {"index": {"number_of_shards": 1,"number_of_replicas": 1}},"mappings": {"_doc": {"dynamic": …

探索氣膜球幕影院:未來的電影體驗

氣膜球幕影院作為一種新興的電影放映方式&#xff0c;正逐漸成為人們關注的焦點。它采用了充氣式膜結構&#xff0c;可以為觀眾帶來 360 度全景的觀影體驗&#xff0c;讓人仿佛置身于電影之中。本文將介紹氣膜球幕影院的特點、技術原理以及未來的發展前景。 傳說在古代&#x…

Linux系統運維命令:使用 tail,grep組合命令(包括wc,sort,awk,sed等),可以方便的查閱和操作正在改變的日志文件的具體內容

一、命令介紹 1、tail命令 tail命令是Linux系統中常用的命令之一&#xff0c;用于查看文件的末尾內容。它具有許多有用的選項&#xff0c;可以幫助用戶輕松地查找并顯示文件中的信息。 它默認顯示文件的最后10行&#xff0c;但可以通過各種選項來定制輸出的行數、字節數等。ta…

十四、圖像幾何形狀繪制

項目功能實現&#xff1a;矩形、圓形、橢圓等幾何形狀繪制&#xff0c;并與原圖進行相應比例融合 按照之前的博文結構來&#xff0c;這里就不在贅述了 一、頭文件 drawing.h #pragma once#include<opencv2/opencv.hpp>using namespace cv;class DRAWING { public:void…

Python筆記-super().init(root)的作用

假設我們有一個名為Animal的父類&#xff0c;它有一個屬性color&#xff0c;在其構造函數__init__中被初始化&#xff1a; class Animal:def __init__(self, color):self.color color現在&#xff0c;我們想創建一個Animal的子類&#xff0c;名為Dog。Dog類有自己的屬性name&…

QPaint繪制自定義儀表盤組件01

網上抄別人的&#xff0c;只是放這里自己看一下&#xff0c;看完就刪掉 ui Dashboard.pro QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomm…

【xss跨站漏洞】xss漏洞前置知識點整理

xss漏洞成因 xss漏洞是一種前端javascript產生的漏洞。 我們網站基本都是會用到javascript編寫一些東西&#xff0c;瀏覽器也能直接識別javascript。 如果有一個地方能夠輸入文字&#xff0c;但是他又沒有過濾你的輸入&#xff0c;那么自己或者他人看到你輸入的javascript代…

JVM知識——安全點

安全點是JVM要準備進行垃圾回收時&#xff0c;選定一些特定的位置&#xff0c;當應用程序線程執行到這些位置時&#xff0c;安全的先暫停下來&#xff0c;以便JVM執行GC線程進行垃圾回收。 JVM在字節碼指令中會選取一些指令作為安全點&#xff0c;安全點的選取一般是循環結束、…

課時42:表達式_運算符_bc計算

3.1.5 bc計算 學習目標 這一節&#xff0c;我們從 基礎知識、簡單實踐、小結 三個方面來學習。 基礎知識 簡介 bc是一種任意精度的計算語言&#xff0c;提供了語法結構&#xff0c;比如條件判斷、循環等&#xff0c;功能是很強大的&#xff0c;還能進行進制轉換。常見參數-…

week04day02(爬蟲02)

<span>: 通常用于對文本的一部分進行樣式設置或腳本操作。<a>: 定義超鏈接&#xff0c;用于創建鏈接到其他頁面或資源的文本。<img>: 用于插入圖像。<br>: 用于插入換行。 姓名&#xff1a;<input type"text" value"lisi">…

嵌入式培訓機構四個月實訓課程筆記(完整版)-Linux ARM驅動編程第七天-內核函數接口(物聯技術666)

鏈接&#xff1a;https://pan.baidu.com/s/1V0E9IHSoLbpiWJsncmFgdA?pwd1688 提取碼&#xff1a;1688 //************************************************** #include <linux/module.h> /*module_init()*/ #include <linux/kernel.h> /* printk() *…

【析】考慮同時取送和時間窗的車輛路徑及求解算法

期刊&#xff1a;computer engineering and applications 計算機工程與應用![c 引言 1. 問題分析 1.1 問題描述 問題描述為&#xff1a; 若干運輸車輛從配送中心出發為客戶取送貨并最終返回配送中心&#xff0c;每位客戶僅由一輛車服務一次&#xff0c;車輛在配送過程中任…

rust實戰系列八:常量

在Rust中還可以用const關鍵字做聲明。如下所示: const GLOBAL: i32 0; 使用const聲明的是常量&#xff0c;而不是變量。因此一定不允許使用mut關鍵字修飾這 個變量綁定&#xff0c;這是語法錯誤。常量的初始化表達式也一定要是一個編譯期常量&#xff0c;不 能是運行期的值。它…

ChatGPT丨成像光譜遙感技術中的AI革命:ChatGPT應用指南

遙感技術主要通過衛星和飛機從遠處觀察和測量我們的環境&#xff0c;是理解和監測地球物理、化學和生物系統的基石。ChatGPT是由OpenAI開發的最先進的語言模型&#xff0c;在理解和生成人類語言方面表現出了非凡的能力。本課程重點介紹ChatGPT在遙感中的應用&#xff0c;人工智…