[Java][華為云Java編程創造營][學習筆記][第二階段][04_Java面向對象之包和內部類]

      網友投稿 706 2025-03-31

      1,包機制


      1.1,包的定義和導入

      為什么需要包?

      Windows樹形文件系統

      文檔分門別類,易于查找和管理

      使用目錄解決文件同名沖突問題

      如何存放兩個同名的類而不沖突?

      使用包:package

      包對應Java源文件的目錄結構

      包的命名

      包名由小寫字母組成,不能以圓點開頭或結尾(package mypackage;)

      包名之前最好加上唯一的前綴,通常使用組織倒置的網絡域名(package com.huawei)

      包名后續部分,依不同機構內部的規范不同而不同(package com.huawei.research)

      包的作用

      允許類組成較小的單元(類似文件夾),易于找到和使用相應的文件

      防止命名沖突,區分名字相同的類

      有助于實施訪問權限控制

      import導包

      為了使用不在同一包中的類,需要在Java程序中使用import關鍵字導入這個類。

      /* * 語法:import 包名.類名; * * 系統包java.util,*指包中的所有類。 * import java.util.*; //導入java.util包中所有類 * * 自定義包 com.huawei.example,java指包中的java類 * import com.huawei.example.java; // 導入指定包中指定類 * */

      使用包的注意事項(一個類同時引用了兩個來自不同包的同名類,必須通過完整類名來區分)

      每個包都是獨立的,頂層包不會包含子包的類

      package和import的順序是固定的

      package必須位于第一行(忽略注釋行)

      只允許有一個package語句

      其次是import

      接著是類的聲明

      1.2,系統常用包

      Java常用包(1)

      作為Java語言的使用者,我們可以感受到Java語言的優勢(平臺無關、面向對象、多線程、高效易擴展等),而且它有很多已經實現的類庫可以供我們直接使用,這些類庫都是以jar包的形式提供的。它們共同構成了Java

      API,為編程者實現了各種常用操作的方法,為程序員編寫Java程序代碼帶來了許多方便。

      對于Java初學者,首先要學習和掌握Java中最常用的一些基礎類庫,然后通過做項目不斷地掌握和應用,并逐步的學習、鉆研底層設計的原理。

      Java常用包(2)

      在Java眾多的API中,目前使用較多的jar包如下表所示

      java常用包(3)

      java.lang包是java語言體系中其他所有類庫的基礎,已經內嵌到java虛擬機中,而且以對象的形式創建好了,所以我們在使用java.lang包時不需要使用import將其導入,可以直接使用java.lang包中的所有類,以及直接引用某個類中的常量、變量和方法。

      String:封裝了與字符串類型相關的操作方法。

      Class:用于描述正在運行的java應用程序中的類和接口的狀態。

      ClassLoader:用于加載類的對象。

      Enum:用于定義枚舉類型。

      Math:用于實現基本數學運算。

      Number:抽象類,是基本數據類型類的父類。

      Object:所有java類的根類。

      Package:封裝了有關java包的實現和規范的版本信息。

      Runtime:Runtime類對象使java應用程序與其運行環境相連接。

      StringBuffer:用于可變字符串的操作。

      StringBuilder:創建可變的字符串對象。

      System:封裝了一些與java虛擬機系統相關的方法。

      Thread:創建和控制線程。

      ThreadGroup:創建和控制線程組。

      Throwable:定義了java中的所有錯誤或異常的父類。

      Process:定義一個進程process對象,通過Runtime類中的exec方法啟動該進程對象。

      Appendable:用于追加字符串。

      Cloneable:用于復制類對象。

      Runnable:用于實現類對象具有線程功能。

      Comparable:用于類對象的排序。

      包含集合框架、collection類、事件模型、日期和時間設施、國際化和各種實用工具類(字符串標記生成器、隨機數生成器和位數組、日期Date類、堆棧Stack類、向量Vector類等)。集合類、時間處理模式、日期時間工具等各類常用工具包。

      java的核心庫java.io提供了全面的io接口。包括:文件讀寫、標準設備輸出等。Java中io是以流為基礎進行輸入輸出的,所有數據被串行化寫入輸出流,或者從輸入流讀入。

      地址:也就是網絡標識符,如IP地址。

      套接字:也就是基本雙向數據通信機制。

      接口:用于描述網絡接口。

      URI:表示統一資源標識符。

      URL:表示統一資源定位符。

      連接:表示到URL所指向資源的連接。

      InetAddress類是對IP(Internet協議)地址的抽象。它有兩個子類:用于IPv4地址的:Inet4Address;用于IPv6地址的:Inet6Address。

      提供使用Java語言訪問并處理存儲在數據源(通常是一個關系數據庫)中的數據的API。此API包括一個框架,憑借此框架可以動態地安裝不同驅動程序來訪問不同數據源。

      1.3,創建jar包和引用

      1,編寫java源碼文件。

      2,使用javac編譯生成class文件。

      3,將所有要打包的class文件存在的目錄以及依賴的jar包全部放在一個根文件夾里面(比如bin)。

      4,編寫MANIFEST清單文件,指定程序入口以及其他添加的依賴的jar包。

      5,執行打包命令:jar {ctxu}{vfm0M} [jar-文件名] [manifest-文件名] [-C 目錄] 文件名…

      6,例如:jar cxfm xxx.jar MANIFEST.MF -C bin/ .

      -c 創建新的jar文件包。

      -v 生成詳細報告并打印到標準輸出。

      -f 指定jar文件名,通常這個參數是必須的。

      -m 指定需要包含的MANIFEST清單文件。

      MANIFEST文件對于jar打包都是必須的。MANIFEST文件描述了打包后的jar文件的詳細信息,存在于打包后的META-INF的文件夾。一個簡單的MANIFEST文件主要內容如下:

      Manifest-Version: 1.0 Created-By: 1.8.0_172 (Oracle Corporation) Main-Class: com.huawei

      Manifest-Version,Main-Class,Class-Path這三個屬性在制作jar包時非常重要

      Manifest-Version 是版本號。

      Main-Class則是jar包的入口程序,指定運行的類的全稱(一定要包含包名),這樣可以使用java -jar name.jar直接運行jar包。

      Class-Path是指的打包時需要依賴的其他jar包,打包的時候自己的程序中也可能含有其他的jar包所以要添加依賴。

      注意:每個MANIFEST屬性冒號與內容之間都有一個空格,并且寫完后最后還要留有一行空行,不然運行時還是出現找不到主清單屬性的錯誤。

      1.4,訪問權限控制

      在Java中,針對類、成員方法和屬性提供了四種訪問級別,分別是private、default、protected和public

      private(當前類訪問級別):對于私有成員變量和方法,只有在本類中創建該類的對象時,這個對象才能訪問自己的私有成員變量和類中的私有方法。

      default(包訪問級別):類的成員變量和方法什么修飾符都沒有,又叫包修飾符,只有類本身成員和當前包下類的成員可以訪問。

      protected(子類訪問級別):用protected修飾的成員變量和方法能被該類的成員以及其子類成員訪問,還可以被同一個包中其他類的成員訪問。

      public(公共訪問級別):這是一個最寬松的訪問控制級別,如果一個類或者類的成員被public訪問控制符修飾,那么這個類或者類的成員能被所有的類訪問,不管訪問類與被訪問類是否在同一個包中。

      通過一個表將四種訪問級別更加直觀表示出來

      訪問級別

      訪問控制級別由小到大

      private -> default -> protected -> public

      編寫代碼時,如果沒有特殊的考慮,建議這樣使用權限

      [Java][華為云Java編程創造營][學習筆記][第二階段][04_Java面向對象之包和內部類]

      成員變量使用private,隱藏細節。

      構造方法使用public,方便創建對象。

      成員方法使用public,方便調用方法。

      2,內部類

      2.1,普通內部類的定義

      什么是內部類?在Java中,允許在一個類的內部定義類,這樣的類稱作內部類,這個內部類所在的類稱作外部類。

      內部類有4中,分別是成員內部類,局部內部類,靜態內部類,匿名內部類。

      2.2,局部內部類

      定義:局部內部類,也叫做方法內部類,就是定義在某個局部范圍中的類,它和局部變量一樣,都是在方法中定義的,其有效范圍只限于方法內部。

      說明:在局部內部類中,局部內部類可以訪問外部類的所有成員變量和方法,而局部內部類中的變量和方法卻只能在創建該局部內部類的方法中進行訪問。

      2.3,靜態內部類

      定義:所謂靜態內部類,就是使用static關鍵字修飾的成員內部類。

      說明:靜態內部類在成員內部類前增加了static關鍵字,在功能上,靜態內部類中只能訪問外部類的靜態成員,同時通過外部類訪問靜態內部類成員時,可以跳過外部類從而直接通過內部類訪問靜態內部類成員。

      創建靜態內部類對象的具體語法格式如下:外部類名.靜態內部類名 變量名=new 外部類名.靜態內部類();

      2.4,匿名內部類

      定義:匿名內部類其實就是沒有名稱的內部類。

      說明:在調用包含有接口類型參數的方法時,通常為了簡化代碼,可以直接通過匿名內部類的形式傳入一個接口類型參數,在匿名內部類中直接完成方法的實現。

      創建匿名內部類對象的具體語法格式如下:

      /** * new 父接口() * { * //匿名內部類實現部分 * } * */

      注意:從JDK8開始,允許在局部內部類、匿名內部類中訪問非final修飾的局部變量,而在JDK8之前,局部變量前必須加final修飾符,否則程序編譯報錯。

      2.5,成員內部類

      定義:在一個類中除了可以定義成員變量、成員方法,還可以定義類,這樣的類被稱作成員內部類。

      說明:在成員內部類中,可以訪問外部類的所有成員,包括成員變量和成員方法;在外部類中,同樣可以訪問成員內部類的變量和方法。

      創建內部類對象的具體語法格式為:外部類名.內部類名 變量名=new 外部類名().new 內部類名();

      Java

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:word表格如何插入斜線表頭(word表格怎么插斜線表頭)
      下一篇:鴻蒙內核A核源碼分析系列四(2) 虛擬內存
      相關文章
      亚洲精品9999久久久久无码 | 亚洲成av人片天堂网| 亚洲经典千人经典日产| 亚洲精品午夜视频| 久久亚洲AV无码精品色午夜| 亚洲人成依人成综合网| 久久久久亚洲Av片无码v| 亚洲av日韩综合一区在线观看| 亚洲老妈激情一区二区三区| 亚洲色婷婷六月亚洲婷婷6月| 亚洲另类少妇17p| 亚洲精品视频久久久| 亚洲成a人无码av波多野按摩| 午夜在线亚洲男人午在线| 日本中文一区二区三区亚洲| 偷自拍亚洲视频在线观看| 亚洲国产成人五月综合网 | 国产精品亚洲天堂| 国产亚洲精品美女| 亚洲国产精品国产自在在线| 亚洲色一色噜一噜噜噜| 相泽亚洲一区中文字幕| 国产亚洲精AA在线观看SEE | 亚洲经典千人经典日产| 无码色偷偷亚洲国内自拍| 一级毛片直播亚洲| 国产亚洲色婷婷久久99精品91| 亚洲中文字幕久久精品无码喷水 | 亚洲成AV人片在线观看无| 亚洲国产成人精品不卡青青草原| 亚洲国产一区在线| 亚洲欧洲日产国码www| 国产精品亚洲自在线播放页码| 亚洲欧美成人综合久久久| 另类小说亚洲色图| 亚洲精品~无码抽插| 亚洲视频免费在线观看| 亚洲午夜电影在线观看高清| 亚洲熟妇av午夜无码不卡| 五月天婷亚洲天综合网精品偷| 亚洲熟妇av一区二区三区|