抽象類與抽象方法

文章目錄

    • 抽象類
      • 抽象類的特點
    • 抽象方法
      • 抽象方法的特點
    • 模板設計模式
      • 模板設計模式能解決的問題
      • 示例

#抽象類與抽象方法

抽象類

用abstract關鍵字來修飾一個類時,這個類就叫抽象類。

public abstract 類名{...
}

抽象類的特點

1)抽象類不能被實例化。

2)抽象類不一定要包含抽象方法,也可以沒有抽象方法。

3)一旦包含了抽象方法,則該類必須為抽象類。

4)抽象類可以有任意成員(抽象類的本質還是類),比如:非抽象方法、構造器,靜態屬性等。

5)如果一個類繼承了抽象類,則它必須實現抽象類的所有抽象方法,除非它自己也聲明為抽象類。

抽象方法

用abstract來修飾一個方法時,這個方法就是抽象方法。

public abstract void 方法名()

抽象方法的特點

1)抽象方法必須定義在抽象類內部。

2)抽象方法沒有方法體,需要繼承該類的子類去重寫方法實現。

3)抽象方法不能用private、final、static來修飾,因為這些關鍵字都是和重寫相違背的。

模板設計模式

抽象類體現的就是一種模板模式的的設計,抽象類作為多個子類的通用模板,子類在抽象類的繼承上進行擴展、改造,但子類總體上會保留抽象類的行為方式。

模板設計模式能解決的問題

1)當功能內部一部分實現是確定的,一部分實現是不確定的。這時可以把不確定的部分暴露出去,讓子類去實現。

2)編寫一個抽象父類,父類提供了多個子類的通用方法,并把一個或多個方法留給其子類實現,就是一種模板設計模式。

示例

需求:有多個類,完成不同的任務job,要求統計得到完成任務的時間。

抽象類:

abstract public class Template { 	//抽象類-模板設計模式public abstract void job();	//抽象方法public void calculateTime() {	//實現方法,調用 job 方法//得到開始的時間long start = System.currentTimeMillis();job(); 	//動態綁定機制//得的結束的時間long end = System.currentTimeMillis();System.out.println("任務執行時間 " + (end - start));}
}

子類重寫job:

public class AA extends Template {@Overridepublic void job() { //實現 Template 的抽象方法 joblong num = 0;for (long i = 1; i <= 800000; i++) {num += i;}}
}

測試:

public class Test1 {public static void main(String[] args) {AA aa = new AA();aa.calculateTime();}
}

成功得到結果:

請添加圖片描述

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

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

相關文章

AOP(黑馬學習筆記)

AOP基礎 學習完spring的事務管理之后&#xff0c;接下來我們進入到AOP的學習。 AOP也是spring框架的第二大核心&#xff0c;我們先來學習AOP的基礎。 在AOP基礎這個階段&#xff0c;我們首先介紹一下什么是AOP&#xff0c;再通過一個快速入門程序&#xff0c;讓大家快速體驗A…

JAVASE初認識

1.初認識其結構 1.源文件&#xff08;擴展名為*.java)&#xff1a;源文件帶有類的定義。類用來表示程序的一個組件&#xff0c;小程序或許只會有一個類。類的內容必須包含在花括號里面。 2.類&#xff1a;類中帶有一個或多個方法。方法必須在類的內部聲明。 3.方法&#xff1…

vue3創建h5 項目使用rem做響應式的配置

第一步 安裝依賴&#xff1a; npm install amfe-flexible -S npm install postcss-px2rem -S第二步 main.ts文件中導入 import "amfe-flexible/index.js";第三步 進行配置&#xff1a; vue3 項目中創建 postcss.cinfig.js文件&#xff0c;這里是基于設計稿是750px…

gRPC知識歸檔

文章目錄 gRPC知識歸檔gRPC原理什么是gRPCgRPC的特性gRPC支持語言gRPC使用場景gRPC設計的動機和原則 數據封裝和數據傳輸問題網絡傳輸中的內容封裝和數據體積問題JSONProtobuf&#xff08;微服務之間的服務器調用&#xff0c;一般采用二進制序列化&#xff0c;比如protobuf&…

精讀《React Hooks 最佳實踐》

簡介 React 16.8 于 2019.2 正式發布&#xff0c;這是一個能提升代碼質量和開發效率的特性&#xff0c;筆者就拋磚引玉先列出一些實踐點&#xff0c;希望得到大家進一步討論。 然而需要理解的是&#xff0c;沒有一個完美的最佳實踐規范&#xff0c;對一個高效團隊來說&#x…

【airtest】自動化入門教程(二)airtest操作

目錄 一、touch 二、wait 三、swipe 四、exists 五、text 六、keyevent 七、snapshot 八、sleep 九、斷言 9.1 assert_exists 9.2 assert_not_exists 9.3 assert_equal 9.4 assert_not_equal 前言&#xff1a;本文主要針對aritest部分的基礎操作,aritest是一個跨平…

網絡編程第二天

1.基于TCP的通信(面向連接的通信) 服務器代碼實現&#xff1a; #include <myhead.h> #define IP "192.168.126.91" #define PORT 9999 int main(int argc, const char *argv[]) {//1、創建套接字int sfd-1;if((sfdsocket(AF_INET,SOCK_STREAM,0))-1){perror(…

LeetCode 76 最小覆蓋字串

LeetCode 76 最小覆蓋字串 在本篇博客中&#xff0c;我們將探討LeetCode上的一道算法題目——“最小覆蓋子串”。這道題的主要目標是找到字符串s中包含字符串t中所有字符的最小子串。 問題描述 給定字符串s和t&#xff0c;要求在字符串s中找到一個最小的子串&#xff0c;使得…

5.36 BCC工具之ucalls.py解讀

一,工具簡介 ucalls工具總結了包括Java、Perl、PHP、Python、Ruby、Tcl和Linux系統調用在內的各種高級語言中的方法調用。它顯示最常調用方法的統計信息,以及這些方法的延遲(持續時間)。 通過系統調用支持,ucalls可以提供關于進程與系統交互的基本信息,包括系統調用計數…

ES系列之Logstash實戰入門

概述 作為ELK技術棧一員&#xff0c;Logstash用于將數據采集到ES&#xff0c;通過簡單配置就能把各種外部數據采集到索引中進行保存&#xff0c;可提高數據采集的效率。 原理 數據源提供的數據進入Logstash的管道后需要經過3個階段&#xff1a; input&#xff1a;負責抽取數…

C#單向鏈表實現:在當前節點后插入新數據的方法Insert()

目錄 一、涉及到的知識點 1.插入算法 2.示例中current 和 _current 的作用 3.current 和 _current 能否合并為一個變量 4.單向鏈表節點類的三個屬性 &#xff08;1&#xff09;Next屬性&#xff1a; &#xff08;2&#xff09; Value屬性&#xff1a; &#xff08;3&am…

【ArcPy】批量讀取文件夾excel中XY并轉為點shp

示例展示 代碼 只讀取excel中含有XY字段的文件&#xff0c;并將矢量命名為excel文件名稱。 import os import pandas as pd import arcpy folder_path r"C:\Users\admin\Desktop\excelfile" extension"xlsx" files [file for file in os.listdir(folder…

SpringCloud gateway限流無效,redis版本低的問題

在使用springCloud gateway的限流功能的時候&#xff0c;配置RedisRateLimiter限流無效&#xff0c;后來發現是Redis版本過低導致的問題&#xff0c;實測 Redis版本為3.0.504時限流無效&#xff0c;改用7.0.x版本的Redis后限流生效。查了資料發現很多人都遇見過這個問題&#x…

RedisTemplate 序列化成功,反序列化失敗List, Set, Map失敗

RedisTemplate 序列化成功&#xff0c;反序列化失敗List, Set, Map失敗 異常信息RedisTemplate配置異常原因錯誤代碼示例解決方法 序列化成功&#xff0c;反序列化失敗 異常信息 Caused by: com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve ty…

小程序事件處理

事件處理 一個應用僅僅只有界面展示是不夠的&#xff0c;還需要和用戶做交互&#xff0c;例如&#xff1a;響應用戶的點擊、獲取用戶輸入的值等等&#xff0c;在小程序里邊&#xff0c;我們就通過編寫 JS 腳本文件來處理用戶的操作 1. 事件綁定和事件對象 小程序中綁定事件與…

React之組件定義和事件處理

一、組件的分類 在react中&#xff0c;組件分為函數組件和class組件&#xff0c;也就是無狀態組件和有狀態組件。 * 更過時候我們應該區別使用無狀態組件&#xff0c;因為如果有狀態組件會觸發生命周期所對應的一些函數 * 一旦觸發他生命周期的函數&#xff0c;它就會影響當前項…

如何設置從小程序跳轉到其它小程序

?有的商家有多個小程序&#xff0c;希望能夠通過一個小程序鏈接到所有其它小程序&#xff0c;用戶可以通過點擊跳轉鏈接實現從一個小程序跳轉到另一個小程序。要怎么才能實現這樣的跳轉呢。下面具體介紹。 1. 設置跳轉。在小程序管理員后臺->分類管理&#xff0c;添加一個…

ssm個人學習01

Spring配置文件: spring環境的搭建: 1:導入對應的spring坐標 也就是依賴 2:編寫controller, service, dao相關的代碼 3:創建配置文件(在resource下面配置文件) 例如:applicationContext.xml <bean id "" class ""> <property name "&…

Node.js 中 fs 模塊文件操作的應用教程

Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環境&#xff0c;它可以讓 JavaScript 代碼在服務器端運行。在 Node.js 中&#xff0c;fs 模塊是用來處理文件系統操作的模塊。通過 fs 模塊&#xff0c;我們可以進行文件的讀取、寫入、刪除等操作。本教程將介紹如何在 No…

工作電壓范圍寬的國產音頻限幅器D2761用于藍牙音箱,輸出噪聲最大僅-90dBV

近年來隨著相關技術的不斷提升&#xff0c;音箱也逐漸從傳統的音箱向智能音箱、無線音箱升級。同時在消費升級的背景下&#xff0c;智能音箱成為人們提升生活品質的方式之一。智能音箱是智能化和語音交互技術的產物&#xff0c;具有點歌、購物、控制智能家居設備等功能&#xf…