国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java 基礎(chǔ)進(jìn)階篇(三)—— 權(quán)限修飾符、final 關(guān)鍵字與枚舉

這篇具有很好參考價(jià)值的文章主要介紹了Java 基礎(chǔ)進(jìn)階篇(三)—— 權(quán)限修飾符、final 關(guān)鍵字與枚舉。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


一、權(quán)限修飾符

權(quán)限修飾符 用于約束成員變量、構(gòu)造器、方法等的訪問范圍。

權(quán)限修飾符: 有四種作用范圍由小到大 (private -> 缺省 ->protected - > public)

Java 基礎(chǔ)進(jìn)階篇(三)—— 權(quán)限修飾符、final 關(guān)鍵字與枚舉
注: 不同包下的子類指的是,不同包下的子類對象能訪問,當(dāng)前類創(chuàng)建父類對象訪問不了。

// 模擬不同包下的子類
public class Zi extends Fu {
    public static void main(String[] args) {
        Fu fu = new Fu();
        // fu.privateMethod(); 訪問不了
        // fu.method(); 訪問不了
        // fu.protectedMethod(); 訪問不了
        fu.publicMethod();

        Zi zi = new Zi();
        zi.protectedMethod(); // 可以訪問 protected
    }
}

定義成員變量、構(gòu)造器、方法等一般需滿足如下要求:

① 成員變量一般私有。
② 方法一般公開。
③ 如果該成員只希望本類訪問,使用 private 修飾。
④ 如果該成員只希望本類,同一個(gè)包下的其他類和子類訪問,使用 protected 修飾。


二、final 關(guān)鍵字

2.1 final 作用

final 關(guān)鍵字是最終的意思,可以修飾類、方法與變量。

  • 修飾類: 類不能被繼承。工具類可以用 final 修飾。
  • 修飾方法: 方法不能被重寫。 模板方法可以用 final。
  • 修飾變量: 有且僅能被賦值一次。

2.2 final 修飾變量舉例

final 修飾 基本數(shù)據(jù)類型 的變量,其存儲(chǔ)的數(shù)據(jù)不能改變。
final 修飾 引用類型 的變量,其存儲(chǔ)的地址不能改變,但是指向的對象內(nèi)容可以改變

舉例:final 修飾變量

public class Test {
    // 修飾靜態(tài)成員變量( public static final 修飾的也稱為常量,必須一次賦完值 )
    public static final String name = "idea"; // 引用類型

    // 修飾實(shí)例成員變量( 必須一次賦完值,幾乎不用 )
    public final String novelName = "孫悟空";

    public static void main(String[] args) {
        // final 修飾變量,總規(guī)則:變量有且僅能賦值一次
        // 變量有兩種:局部變量;成員變量(實(shí)例成員變量、靜態(tài)成員變量)

        // 局部變量
        final double rate = 3.14; // 基本數(shù)據(jù)類型
        // rate = 4.23; 報(bào)錯(cuò),第二次賦值

        // 成員變量
        // name = "dev"; // 報(bào)錯(cuò),第二次賦值

        // new Test().novelName = "唐僧"; // 報(bào)錯(cuò),第二次賦值
    }
}

new Test().novelName = “唐僧”; 報(bào)錯(cuò)是由于引用地址發(fā)生了變化,內(nèi)存原理是在堆內(nèi)存的常量池中存儲(chǔ)了一個(gè)“唐僧”的變量,并將引用地址賦給 novelName。

參考:Java 基礎(chǔ)入門篇(六)—— String 類詳解

舉例:final 修飾引用類型的變量

class Teacher{
    private String hobby;
    public Teacher(String s) {
        hobby = s;
    }
    public String getHobby() {
        return hobby;
    }
    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

public class Test {
    public static void main(String[] args) {
        // 注意: final修飾引用類型的變量,其地址值不能改變,但是指向的對象的內(nèi)容可以改變的。
        final Teacher teacher = new Teacher("學(xué)習(xí),授課");
        teacher.setHobby("打籃球");
        System.out.println(teacher.getHobby()); // 打籃球
    }
}

沒有報(bào)錯(cuò)的原因:雖然 teacher 對象內(nèi)部的引用數(shù)據(jù)的地址發(fā)生了變化,但是 teacher 對象的引用地址沒有發(fā)生變化。


2.3 常量

常量是 public static final 修飾的成員變量,有且僅能賦值一次。

作用:做系統(tǒng)的配置信息,方便程序維護(hù),提高可讀性。
規(guī)范:名稱全部大寫,多個(gè)單詞用下劃線連接
常量會(huì)出現(xiàn)宏替換:所以常量名的地方在編譯后都是變成真實(shí)的數(shù)據(jù)。

接口中的常量,默認(rèn)加上 public static final 修飾,不寫也有。如我們一般在項(xiàng)目中定義的常量接口:

Java 基礎(chǔ)進(jìn)階篇(三)—— 權(quán)限修飾符、final 關(guān)鍵字與枚舉


三、枚舉

枚舉是一種特殊類型,其用來做信息的標(biāo)志和信息的分類。

3.1 枚舉的格式

Java 基礎(chǔ)進(jìn)階篇(三)—— 權(quán)限修飾符、final 關(guān)鍵字與枚舉


3.2 枚舉的特征

反編譯后觀察枚舉的特征:

使用 javap 命令反編譯 class 文件得到如下結(jié)果:
Java 基礎(chǔ)進(jìn)階篇(三)—— 權(quán)限修飾符、final 關(guān)鍵字與枚舉

特征如下:

① 枚舉類都是繼承了枚舉類型 java.lang.Enum。
② 枚舉都是最終類,不可以被繼承。
構(gòu)造器的構(gòu)造器都是私有的,枚舉對外不能創(chuàng)建對象。(看不到)
④ 枚舉類的第一行默認(rèn)都是羅列枚舉對象的名稱的。
⑤ 枚舉類相當(dāng)于是多例模式,如上文只有四個(gè)對象。


3.3 枚舉的應(yīng)用

應(yīng)用 1:業(yè)務(wù)枚舉類與業(yè)務(wù)結(jié)果包裝類

/**
 * 業(yè)務(wù)消息枚舉
 */
public enum CodeMsg {

    SUCCESS(200, "操作成功"),
    ERROR(110, "程序員送外賣去了"),
    
    USERNAME_PASSWORD_ERROR(4001001, "用戶名或者密碼錯(cuò)誤!"),
    USER_LOGIN_NAME_EXIST_ERROR(4001002, "用戶登陸名已經(jīng)存在!"),
    USER_PHONE_EXIST_ERROR(4001003, "用戶手機(jī)號(hào)已被使用!");

    public Integer code; // 業(yè)務(wù)碼
    public String msg; // 業(yè)務(wù)消息

    CodeMsg(Integer code, String msg){
        this.code = code;
        this.msg = msg;
    }
}
/**
 * 業(yè)務(wù)結(jié)果包裝類
 * 前端需要: code msg data 這樣的數(shù)據(jù)格式
 * 因此后端對數(shù)據(jù)進(jìn)行包裝
 */
@Data
public class Result {

    private Integer code; //業(yè)務(wù)碼
    private String msg; // 業(yè)務(wù)消息
    private Object data; // 業(yè)務(wù)數(shù)據(jù)

     /*
    所有的業(yè)務(wù)分為兩種情況:
        1. 成功:
            1. 成功了沒數(shù)據(jù)  如:刪除
            2. 成功了有返回?cái)?shù)據(jù)  如:查詢
        2. 失?。?            失敗時(shí)沒有數(shù)據(jù),返回失敗原因
     */

    /**
     * 成功沒有數(shù)據(jù)
     */
    public Result(){
        this.code = CodeMsg.SUCCESS.code;
        this.msg = CodeMsg.SUCCESS.msg;
    }

    /**
     * 成功有數(shù)據(jù)
     */
    public Result(Object data){
        this();
        this.data = data;
    }

    /**
     * 失敗時(shí)沒有數(shù)據(jù),返回失敗原因
     */
    public Result(CodeMsg codeMsg){
        this.code = codeMsg.code;
        this.msg = codeMsg.msg;
    }

    /**
     * 兼容異常信息
     *      因?yàn)楫惓V?code 和 msg
     * @param businessException
     */
    public Result(BusinessException businessException){
        this.code = businessException.getCode();
        this.msg = businessException.getMessage();
    }
}

應(yīng)用 2:switch 兼容枚舉類

public void showSeason(Season s){
	switch (s){
	    case SPRING: // 不用寫成 s.SPRING, switch 兼容枚舉
	        break;
	    case SUMMER:
	        break;
	    case AUTUMN:
	        break;
	    case WINTER:
	        break;
	    default:
	        break;
	}
}

文章參考:Java入門基礎(chǔ)視頻教程,java零基礎(chǔ)自學(xué)就選黑馬程序員Java入門教程(含Java項(xiàng)目和Java真題)文章來源地址http://www.zghlxwxcb.cn/news/detail-431210.html

到了這里,關(guān)于Java 基礎(chǔ)進(jìn)階篇(三)—— 權(quán)限修飾符、final 關(guān)鍵字與枚舉的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java面向?qū)ο蟆鄳B(tài)、Object類、instanceof關(guān)鍵字以及final關(guān)鍵字

    Java面向?qū)ο蟆鄳B(tài)、Object類、instanceof關(guān)鍵字以及final關(guān)鍵字

    總之,多態(tài)是面向?qū)ο缶幊讨幸粋€(gè)非常重要的概念,通過它可以實(shí)現(xiàn)統(tǒng)一的接口來操作不同的對象,提高代碼的可讀性和可維護(hù)性。在實(shí)際編程中,多態(tài)性的使用可以使代碼更加靈活和擴(kuò)展性更強(qiáng)。方法重寫是實(shí)現(xiàn)多態(tài)的基礎(chǔ)。 重寫如下所示 關(guān)于hashCode方法的重寫: 重寫t

    2024年02月12日
    瀏覽(114)
  • 淺析Java中的final關(guān)鍵字(詳細(xì))

    1.什么是final(概念) 2.final基本用法 3.深入理解final 4.final 的最佳實(shí)踐 談到final,想必很多人都不陌生,在使用匿名內(nèi)部類的時(shí)候可能會(huì)經(jīng)常用到final 。final 是 Java 中的一個(gè),可以用于修飾類、方法和變量。當(dāng)一個(gè)類被聲明為

    2024年02月03日
    瀏覽(94)
  • Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式

    Java 基礎(chǔ)進(jìn)階篇(一)——— static 靜態(tài)關(guān)鍵字與單例模式

    static:代表靜態(tài)的意思,可以修飾成員變量,可以修飾成員方法。 static 修飾方法之后稱為 靜態(tài)方法(類方法) ,修飾成員變量之后稱為 靜態(tài)成員變量(類變量) 。 static 修飾后的成員變量, 可以被類的所有對象共享 (訪問、修改) 。 靜態(tài)成員變量 實(shí)例成員變量 概述 有

    2024年02月01日
    瀏覽(48)
  • static關(guān)鍵字和final關(guān)鍵字

    在java的中,static和final是兩個(gè)必須掌握的。static和final用法多樣,且在一定環(huán)境下使用,可以提高程序的運(yùn)行性能,優(yōu)化程序的結(jié)構(gòu)。下面將依次介紹static和final。注意,某些場景下,staic和final可以聯(lián)合使用

    2024年02月09日
    瀏覽(98)
  • final關(guān)鍵字的作用

    目錄 1.修飾類時(shí) 2.修飾方法時(shí) 3.修飾屬性和局部變量時(shí) 3.1修飾局部變量時(shí) 3.2修飾成員變量時(shí) 3.3修飾類變量時(shí) 4.final與普通變量的區(qū)別 5.final用于引用 1.只能是公共的(public)就算不寫也是public 2.被final修飾的類不可以被繼承 1.方法不能不能覆蓋 2.被final修飾的方法,JVM會(huì)嘗試

    2024年02月05日
    瀏覽(78)
  • final 關(guān)鍵字的用法

    final; //使用的位置: 1.用于聲明常量:基本數(shù)據(jù)類型的常量不允許修改值, ? ? ? ? ? ? ? ? ? ? ? ? ? ?引用數(shù)據(jù)類型的常量不允許重新分配內(nèi)存地址 2.用于聲明方法(最終方法),該方法在了類中不能重寫,在當(dāng)前類中允許重載 3.用于聲明類(最終類), 該類不允許子類繼承

    2024年01月21日
    瀏覽(93)
  • Final關(guān)鍵字的使用技巧及其性能優(yōu)勢

    Final關(guān)鍵字的使用技巧及其性能優(yōu)勢

    Java中的final用于修飾變量、方法和類,可以讓它們在定義后不可更改,從而提高程序的穩(wěn)定性和可靠性。此外,final還有一些使用技巧和性能優(yōu)勢,本文將詳細(xì)介紹它們。 在Java中,final用于修飾變量、方法和類,其基本用法如下: 修飾變量 當(dāng)我們使用f

    2024年02月03日
    瀏覽(439)
  • 面向?qū)ο螅ò耍?- static 與 final 關(guān)鍵字 的使用

    目錄 1.??static 1.1??static 的概述 1.2??static 修飾的特點(diǎn) 1.3??static 使用時(shí)的注意事項(xiàng):

    2023年04月25日
    瀏覽(91)
  • 我在VScode學(xué)Java類與對象(Java顯式參數(shù)和隱式參數(shù)、靜態(tài)方法+main方法、Java訪問修飾符、static關(guān)鍵字、Java的包、對象數(shù)組)第三輯

    我在VScode學(xué)Java類與對象(Java顯式參數(shù)和隱式參數(shù)、靜態(tài)方法+main方法、Java訪問修飾符、static關(guān)鍵字、Java的包、對象數(shù)組)第三輯

    我的個(gè)人博客主頁:如果’\\\'真能轉(zhuǎn)義1??說1??的博客主頁 關(guān)于Java基本語法學(xué)習(xí)----可以參考我的這篇博客:《我在VScode學(xué)Java》 方法會(huì)操作對象并訪問他們的實(shí)例字段。 在Java中,顯式參數(shù)和隱式參數(shù)是方法調(diào)用中的兩種不同類型的參數(shù)。 注釋: 第7行: sum 方法的參數(shù)

    2024年02月16日
    瀏覽(115)
  • 【Java基礎(chǔ)】volatile關(guān)鍵字

    【Java基礎(chǔ)】volatile關(guān)鍵字

    關(guān)于作者:CSDN內(nèi)容合伙人、技術(shù)專家, 從零開始做過日活千萬級APP。 專注于分享各領(lǐng)域原創(chuàng)系列文章 ,擅長java后端、移動(dòng)開發(fā)、人工智能等,希望大家多多支持。 我們繼續(xù)總結(jié)學(xué)習(xí)Java基礎(chǔ)知識(shí),溫故知新。 volatile 是一個(gè)Java,可以用來修飾變量,volatile也被稱為輕

    2024年02月11日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包