【軟件工程師從0到1】- 封裝 (知識匯總)

前言

介紹:大家好啊,我是hitzaki辰。

社區:(完全免費、歡迎加入)日常打卡、學習交流、資源共享的知識星球。

自媒體:我會在b站/抖音更新視頻講解 或 一些純技術外的分享,賬號同名:hitzaki辰。

正文開始,抓緊上車!

8f4dc768ffa445d78de7eb9469c55c3d.png

?


一 - 封裝的目的

1.隱藏類的實現細節

2.讓使用者只能通過事先預定的方法來訪問數據,從而可以在該方法里加入控制邏輯,限制對實例變量的不合理使用

3.可進行數據檢查,從而有利于保證對象信息的完整性

4.便于修改提高代碼的可維護性。

二 - 權限修飾符

public(公有的) > protected(受保護的) > (default)(缺省的) > private(私有的)

(default并不是關鍵字 default,而是根本不寫)

1 - private

? 1.作用域:? 只在該類的內部可見,出了該類不可見,無法使用。(子類也無法訪問)

? 2.修飾:

? private不能修飾外部類,可以修飾內部類。

? 被private修飾的成員變量或成員方法,不能被類的調用者使用。

? 阿里編程規約:類中,無特殊說明,成員變量全用private封裝。

? 修飾成員變量實現私有化,再使用設置器setter、訪問器getter來訪問。

? 優點:提高代碼復用, 提高程序的安全性。

? (方法,類,屬性的私有化... 都是封裝的體現)

2 - default

作用域:只有同一個包內才能訪問。(同一個直接包,子包不算)

3 -?protected

作用域:同一個包內 或 子類

應用:設計模式中的模板方法

? 使用它修飾多個行為方法:protected 返回 行為n(){}

? 最終public action方法按順序調用所有行為方法。

? 子類可以對各個行為方法進行重寫,以此改變action的行為,并且這些單獨的行為方法還不會對外暴露。

4 -?public

作用域:全部

三 - java的"包"

java的包是用來組織文件的一種虛擬文件系統,它是跨平臺的,與操作系統無關。

?

因為不同的人會以不同的目的定義相同的類名或接口名,Java解決此問題的主要方法是包,Java中組織類和接口的方式也是包。

1)把功能相似或相關的類或接口組織在同一個包中,方便類的查找和使用。

2)包如同文件夾一樣,文件放在文件夾 ,而類和接口放在包下,包和文件夾一樣,都是層次結構。

3)包也限定了訪問權限,擁有包訪問權限的類才能訪問某個包中的類。

4)以 . 分隔表層次結構,比如java.lang.String,java為上層包名,lang為下層包名,???? {帶完整包名的類稱為完全限定名。}

??? (Java API 中所有類、接口都位于包java、javax下, java是標準包、 javax是擴展包)

1 - 聲明程序所在包

1)在外部類的首部 (前面不能有除注釋外的其他語句), 必須編寫類所屬哪個包, 格式: package 包名;

2)包名的前綴通常由多個單詞組成, 所有單詞的字母小寫, 單詞與單詞之間使用.隔開 ,

3)一般命名為“域名.項目名.模塊名…”。? (因為Java規范要求包命名的唯一性,因此常使用域名命名,這樣不會沖突)

比如org.xuanchen.wschool.service ,這是這個模塊所有代碼都有的包前綴,它一定是唯一的,其次再根據業務細分出子包,如controller、service。

2 - 通過包使用類

1)通過完全限定名使用

2)通過完全限定名導入后 再使用, import 完全限定名;

3)import java.util.*;???? 將導入這個包下的所有直接類。 (不包含子包下的類)?? (不可以import java.*.*; )

4)靜態導入: 在JDK 1.5之后引入的新特性,可直接將類的公開靜態方法和成員導入到自己這里,此后直接根據方法名使用。

如 import java.util.Arrays.*;??????????? 此后可以直接sort(arr);

3 - jar包

打包的一般都是編譯后的代碼, 將1到多個編譯后的文件打包為1個文件,方便其他程序調用。

Java的打包命令為jar,打包后的文件拓展名為jar,稱為jar包。

?

使用下列方式打包:

1)先找到編譯后的文件 .class 的根目錄

2)在cmd運行命令: jar -cvf <包名>.jar <最上層包名>

?

1)jar包其實就是一個壓縮文件,可以使用解壓縮的工具打開。

2)Java類庫、第三方類庫 都是以jar包的形式提供,使用時將其jar包加入類路徑即可。

?

?

結尾

感謝你看到這里,如果感覺內容不錯的話請點贊支持一下!

如果小伙伴對我的講解有疑問,歡迎評論區討論。

?

?

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

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

相關文章

藍橋等考C++組別八級005

第一部分:選擇題 1、C++ L8 (15分) 以下關于break的說法正確的是( )。 A. 只有循環結構里面才可以使用break語句。 B. 程序運行到break語句的時候會暫停,直到用戶按下任意鍵才會繼續執行。 C. 嵌套循環的內層循環里面遇到break的時候,整個嵌套循環結構會立即停止,…

Jenkins擴展篇-流水線腳本語法

JenkinsFile可以通過兩種語法來聲明流水線結構&#xff0c;一種是聲明式語法&#xff0c;另一種是腳本式語法。 腳本式語法以Groovy語言為基礎&#xff0c;語法結構同Groovy相同。 由于Groovy學習不適合所有初學者&#xff0c;所以Jenkins團隊為編寫Jenkins流水線提供一種更簡…

kubernetes學習-概念5

服務&#xff08;Service&#xff09; Kubernetes 中 Service 是 將運行在一個或一組 Pod 上的網絡應用程序公開為網絡服務的方法。 Kubernetes 中 Service 的一個關鍵目標是讓你無需修改現有應用以使用某種不熟悉的服務發現機制。 你可以在 Pod 集合中運行代碼&#xff0c;無…

nginx使用詳解:轉發規則、負載均衡、server_name

文章目錄 一、nginx常用的轉發規則location 指令說明location轉發使用 二、upstream負載均衡使用三、server_name使用四、其他常用配置限制請求類型處理靜態資源目錄遍歷問題限制客戶端使用的ip或者域名 五、需要注意的地方location /api1 探討location ~ /api1 探討&#xff0…

DataFunSummit:2023年OLAP引擎架構峰會-核心PPT資料下載

一、峰會簡介 OLAP技術是當前大數據領域的熱門方向&#xff0c;該領域在各個行業都有廣泛的使用場景&#xff0c;對OLAP引擎的功能有豐富多樣的需求。同時&#xff0c;在性能、穩定性和成本方面&#xff0c;也有諸多挑戰。目前&#xff0c;OLAP技術沒有形成統一的事實標準&…

redis性能管理

redis的數據庫是存放在內存當中&#xff0c;所以對內存的監控至關重要 redis內存監控和解析 1.如何查看redis內存使用情況 [rootlocalhost utils]# redis-cli -h 20.0.0.170 -p 6379 20.0.0.170:6379> info memory used_memory:853336 //redis中數據占用的內存 use…

觸發設備離線

業務場景 業務開發過程中&#xff0c;我們經常會需要判斷遠程終端是否在線&#xff0c;當終端離線的時候我們需要發送消息告知相應的系統&#xff0c; 環形隊列 1.創建一個index從0到30的環形隊列&#xff08;本質是個數組&#xff09; 2.環上每一個slot是一個Set&#xf…

python 執行系統命令

subprocess 模塊和 os.system 或 os.popen 等函數相比&#xff0c;功能更為強大和靈活&#xff0c;是 Python 官方推薦的執行系統命令的方法。主要的優勢包括&#xff1a; 更強的錯誤處理&#xff1a;subprocess 模塊可以更精細地控制錯誤輸出和錯誤代碼&#xff0c;而 os.syst…

自定義springboot的生命周期函數在項目啟動完成后去取配置文件中的值

主要是實現smartLifecycle類 package com.ruoyi.workflow.util;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springfr…

MYSQL索引使用注意事項

索引使用注意事項&#xff1a; 1.索引列運算 不要在索引列上進行運算操作&#xff0c;否則索引將失效&#xff1b; 2.字符串不加引號 字符串類型使用時&#xff0c;不加引號&#xff0c;否則索引將失效&#xff1b; 3.模糊查詢 如果僅僅是尾部模糊匹配&#xff0c;索引將不會失…

防火墻暴露端口

如果你想開通防火墻上的端口&#xff0c;具體的操作方式可能會取決于你所使用的操作系統。以下是一些常見操作系統的步驟&#xff1a; 1. Linux&#xff08;例如&#xff0c;Ubuntu 或 CentOS&#xff09;: 使用 ufw&#xff08;適用于 Ubuntu&#xff09;&#xff1a; # 開…

RK平臺查看板子上的dts信息

簡介 dts文件描述了硬件每個模塊的信息&#xff0c;我們嵌入式軟件的調試很多時候都是在改dts文件&#xff0c;有時候我們不確定板子上的固件是否已經更新了我們的修改&#xff0c;這時候我們可以直接讀取板子上的dts信息&#xff0c;下面來演示一下。 進入uboot命令行模式 …

關于軟raid的實現及常見問題

RAID概念 磁盤陣列&#xff08;Redundant Arrays of Independent Disks&#xff0c;RAID&#xff09;&#xff0c;有“獨立磁盤構成的具有冗余能力的陣列”之意。 磁盤陣列是由很多價格較便宜的磁盤&#xff0c;以硬件&#xff08;RAID卡&#xff09;或軟件&#xff08;MDADM&…

關于用css設置input輸入框hover的時候的樣式以及當input為disabled的時候,不要讓hover樣式生效

效果如果&#xff1a; 編輯狀態下的時候&#xff1a; 只讀狀態下的時候&#xff1a; 代碼如圖&#xff1a; <input type"text" name"dataForm.exportCode" id"exportCodeItem" required :disabled"editDisabled" />input:not(…

【前端學java】語法練習-工具類的封裝(13)

往期回顧&#xff1a; 【前端學java】JAVA開發的依賴安裝與環境配置 &#xff08;0&#xff09;【前端學 java】java的基礎語法&#xff08;1&#xff09;【前端學java】JAVA中的packge與import&#xff08;2&#xff09;【前端學java】面向對象編程基礎-類的使用 &#xff08…

java.net.UnknownHostException: eureka

java.net.UnknownHostException: eureka 哦。HOST漏了 #linux /etc/hosts #windows C:\Windows\System32\drivers\etc\hosts 127.0.0.1 eureka7000 127.0.0.1 eureka7001 127.0.0.1 eureka7002

maven打包可執行jar含依賴lib

修改pom.xml <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><!-- jdk8可用&#xff0c;其他jdk版本可能需改插件版本 --><version>2.3.7.RE…

sql調優

慢查詢 SQL 治理方案 一、SQL 性能下降的原因 在對 SQL 進行分析之前&#xff0c;需要明確可能導致 SQL 執行性能下降的原因進行分析&#xff0c;執行性能下降可以體現在很多方面&#xff1a; 查詢語句寫的爛索引沒加好表數據過大數據庫連接數不夠查詢的數據量過大被其他慢s…

MyBatisPlus代碼生成

基礎依賴 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…