JavaSE_關鍵字 介面 代碼塊 枚舉

来源:https://www.cnblogs.com/epicenter/archive/2022/05/25/16310749.html
-Advertisement-
Play Games

對JavaSE_關鍵字 介面 代碼塊 枚舉 相關重要知識點進行了介紹和總結 ...


1 Java中的關鍵字

1.1 static關鍵字

static特點 :
  • 靜態成員被所在類的所有對象共用
  • 隨著類的載入而載入 , 優先於對象存在
  • 可以通過對象調用 , 也可以通過類名調用 , 建議使用類名
static關鍵字的註意事項
  • 靜態方法中只能調用靜態成員(因為靜態成員隨著類的載入而載入,非靜態成員隨著對象的創建而載入,所以要想訪問非靜態成員可以通過創建對象來調用)
  • 非靜態方法中可以調用任何成員(非靜態成員變數,方法, 靜態成員變數,方法)
  • 靜態方法中不能存在this關鍵字(因為this代表的是對象,靜態成員在載入時還沒有對象)
  • static一般用在工具類中的方法上
局部變數 成員變數 靜態變數
  • 局部變數屬於方法,成員變數屬於對象,靜態變數屬於類

1.2 final關鍵字

  • final關鍵字 : 翻譯中文代表最終的意思 , 是java的一個關鍵字 也是一個修飾符 , 可以修飾類 , 可以修飾方法 , 也可以修飾變數

  • final關鍵字修飾的特點

    • final修飾的類 : 不能被繼承 , 沒有子類
    • fina修飾的方法 : 不能被重寫
    • final修飾的變數 :
      • 基本數據類型 : 值不能改變
      • 引用數據類型 : 地址不可發生改變 , 對象的屬性可改變
      • 註意 :
        • 被final修飾的變數 , 我們叫做自定義常量 , 命名規範 : 每個字母需要大寫 , 多個單詞之間用下劃線分割
        • final修飾成員變數需要註意初始化時機的問題 , 1) 直接賦值 , 2) 在構造方法執行完畢前賦值

1.3 Java中的許可權修飾符

  • public -- protected -- 預設的 -- private
    image

2 代碼塊

2.1 構造代碼塊

  • 構造方法塊 : 用一對大括弧表示, 定義在類中方法外
  • 執行時機 : 每次構造方法執行前, 都會執行構造代碼塊
  • 作用 : 抽取構造方法中共性內容

2.2 靜態代碼塊

  • 靜態代碼塊 : 在一對大括弧前加上static關鍵字 , 定義在類中方法外
  • 執行時機 : 隨著類的載入而載入 , 只載入一次
  • 作用 : 一般用於給靜態成員初始化

2.3 局部代碼塊

image

怎麼找一個變數的作用域?
  • 變數所在的那對大括弧即是作用域範圍

3 介面

3.1 介面的定義和特點

  • 介面的子類我們叫做實現類
    • 要麼重寫介面中所有的抽象方法
    • 要麼實現類是一個抽象類
  • 註意 : 類與介面的關係是實現關係 , 一個類可以實現多個介面,調用逗號分隔 , 還可以繼承一個類的同時 , 實現多個介面 (繼承只能繼承一個類,不能多繼承,可以多層繼承)

3.2 介面的成員特點

  • 成員變數 : 都是常量 , 預設修飾符 public static final ,它們三個的書寫順序可以隨意,但是一般許可權修飾符寫在最前面,static寫在許可權修飾符後面,其餘的寫在static後面
  • 構造方法 : 沒有構造方法
  • 成員方法 : JDK8版本前 只能是抽象方法 , 預設修飾符public abstract

3.5 介面中成員方法的特點

  • DK8版本之前 : 只能是抽象方法
  • JDK8版本 :
    • 預設方法
      • JDK8可以在介面中定義非抽象方法(帶有方法體的方法) , 需要使用default進行修飾 , 其實就是預設方法
      • 作用 : 解決介面升級的問題
      • 格式 : public default 返回值類型 方法名(參數) { ... }
      • 註意事項 :
        • 預設方法不是抽象方法 , 可以繼承 , 也可以重寫 , 重寫需要去掉default關鍵字
        • public 可以省略 , default不能省略
        • 如果實現類實現了多個介面 , 有相同的方法聲明 , 那麼實現類必須重寫該方法
    • 靜態方法
      • JDK8可以在介面中定義靜態方法 , 也是有方法體的方法
      • 作用 : 方便調用此功能
      • 格式 : public static 返回值類型 方法名(參數){ ... }
      • 註意事項
        • 靜態方法只能通過介面名調用 , 不能通過實現類名字和對象調用
        • public可以省略 , static不能省略
  • JDK9版本 :
    • 私有方法
      • JDK9中新增私有方法
      • 作用 : 抽取預設方法中共性內容
      • 格式 : private 返回值類型 方法名(參數){ ... }
      • 註意 : 要想抽取靜態方法中的共性內容 , 需要對私有方法加上關鍵字static
  • 介面可以單繼承,也可以多繼承,還可以多層繼承

4 枚舉

  • 枚舉 : 當一個變數有幾種固定可能的取值時,就可以將它定義為枚舉類型

  • 作用 : 更貼切 , 加見名之意

  • 定義 : public enum 枚舉名{ ... }

  • 使用 : 通過枚舉類型名直接引用枚舉項即可,例如Sex.BOY、Sex.GIRL
    註意 : 每個枚舉項都相當於枚舉的對象

  • 案例代碼

    package com.itheima.enum_demo;
    
    public enum Sex {
        // 每一個枚舉項都是枚舉的對象
        GIRL("女孩"), BOY("男孩");
    
        // 成員變數
        private String name;
    
        // 空參構造方法
        private Sex() {
        }
    
        // 有參構造方法
        private Sex(String name) {
            this.name = name;
        }
    
        // 成員方法
        public String getName() {
            return name;
        }
    }
    
    class Test {
        public static void main(String[] args) {
            System.out.println(Sex.GIRL.getName());
            System.out.println(Sex.BOY.getName());
        }
    }
    
  • 枚舉的本質 :

    • 枚舉其實本質上是一個類,每一個枚舉項是本枚舉類類型的一個對象。我們可以使用JDK提供的反編譯命令,將枚舉的位元組碼進行反編譯查看
      • 枚舉本質上就是最終類
      • 枚舉項,就是枚舉類的對象,而且是靜態的常量。
      • 有私有的構造方法
      • 靜態代碼塊
      • 繼承了lang包下的Enum
  • 組成部分 :

    • 構造器,成員方法,成員變數等 , 但是定義的成分一定要在枚舉項之後,而且最後一個枚舉項必須要有分號結束。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 主題 Theme | Vitesse Theme Font | Input Mono、Fira Code、方正聚珍新仿簡體(下載方正官方正版字體,使用 FontCreator 加粗) File Icons | Gruvbox Material Icon Theme Product Icons | C ...
  • 1. 內置指令 v-show : 說明:根據條件展示元素,true展示元素,false隱藏元素 版本:vue2,vue3 <template> <div> <button v-show="isShow"></button> </div> </template> <script> export def ...
  • 本文記錄如何在 Vue2 環境下儘量使用 Vue3 的 Composition-api 並配合 Vuetify2 使用 ...
  • 切麵:公共的,通用的,重覆的功能稱為切麵,面向切麵編程就是將切麵提取出來,單獨開發,在需要調用的方法中通過動態代理的方式進行織入 ...
  • 1.微服務架構是什麼? 由很多個微服務來組成,並且每個服務與服務有自己獨立的資料庫,服務與服務之間是通過輕量級的協議(比如:rpc,http等)來調用,每個服務是獨立的,自治的能夠獨立的發佈和部署。如下圖: 本質上來講,微服務只是一種架構風格。架構風格如何採取,那麼就需要涉及到架構特征這個概念。而架 ...
  • 1. Java基礎(1)——ThreadLocal 1.1. ThreadLocal ThreadLocal是一個泛型類,當我們在一個類中聲明一個欄位:private ThreadLocal<Foo> threadLocalFoo = new ThreadLocal<>();時,這時候,即使不同的線 ...
  • 事務原本是資料庫中的概念,在實際項目的開發中,進行事務的處理一般是在業務邏輯層, 即 Service 層。這樣做是為了能夠使用事務的特性來管理關聯操作的業務。 ...
  • 第一章 : 開始 1.1 編寫一個簡單的C++程式 要點:每個函數有且只能擁有一個main函數,且main的預設返回是一個int類型。 函數定義:返回類型,函數名,形參列表,函數體 ###1.1.1編譯 運行程式 ####程式源文件命名約定 無論使用命令行還是IDE(集成開發環境),都將代碼存放在一 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...