教育行業(yè)A股IPO第一股(股票代碼 003032)

全國(guó)咨詢/投訴熱線:400-618-4000

final關(guān)鍵字的作用和特點(diǎn)【final關(guān)鍵字的作用詳細(xì)介紹】

更新時(shí)間:2021年07月13日18時(shí)19分 來(lái)源:傳智教育 瀏覽次數(shù):

好口碑IT培訓(xùn)


final關(guān)鍵字

final的英文意思是“最終”。 在Java中,可以使用final 關(guān)鍵字聲明類、屬性、方法,在聲明時(shí)需要注意以下幾點(diǎn)。

(1)使用final修飾的類不能有子類。

(2)使用final修飾的方法不能被子類重寫(xiě)。

(3)使用final修飾的變量(成員變量和局部變量)是常量,常量不可修改。

下面將對(duì)final的用法逐一進(jìn)行講解。


final關(guān)鍵字修飾類

Java中的類被final關(guān)鍵字修飾后,該類將不可以被繼承,即不能派生子類。下面通過(guò)一個(gè)案例進(jìn)行驗(yàn)證,如文件4-7所示。

文件4-7 Example07.java

// 使用final關(guān)鍵字修飾Animal類
final class Animal {
    // 方法體為空
}
// Dog類繼承Animal類
class Dog extends Animal {
    //方法體為空
}
// 定義測(cè)試類
public class Example07 {
    public static void main (String[] args) {
        Dog dog = new Dog();    //創(chuàng)建Dog類的實(shí)例對(duì)象
    }
}

編譯文件4-7,編譯器報(bào)錯(cuò),如圖4-8所示。

編譯報(bào)錯(cuò)

文件4-7中,第2行代碼定義了Animal類并使用final 關(guān)鍵字修飾,第6~8行代碼定義了Dog類并繼承Animal類。

如圖4-8所,當(dāng)Dog類繼承使用final 關(guān)鍵字修飾的Animal類時(shí)編譯器報(bào)“無(wú)法從最終cn.itcast.Animal進(jìn)行繼承”錯(cuò)誤,即不能繼承使用final修飾的Animal類。由此可見(jiàn),被final關(guān)鍵字修飾的類為最終類,不能被其他類繼承。


final關(guān)鍵字修飾方法

當(dāng)一個(gè)類的方法被final 關(guān)鍵字修飾后,這個(gè)類的子類將不能重寫(xiě)該方法。下面通過(guò)一個(gè)案例進(jìn)行驗(yàn)證,如文件4-8所示。

// 定義Animal類
class Animal {
    //使用final關(guān)鍵字修飾shout()方法
    public final void shout () {
    }
}
// 定義Dog類繼承Animal類
class Dog extends Animal{
    //重寫(xiě)Animal類的shout()方法
    public void shout (){

    }
}
// 定義測(cè)試類
public class Example08 {
    public static void main (String[] args) {
        Dog dog=new Dog ();     // 創(chuàng)建Dog類的實(shí)例對(duì)象
    }
}

編譯文件4-8,編譯器報(bào)錯(cuò),如圖4-9所示。

編譯器報(bào)錯(cuò)

在文件4-8中,第10行代碼在Dog類中重寫(xiě)了父類Aina中的shout ( )方法,編譯報(bào)錯(cuò)。這是因?yàn)锳nimal類的shout ( )方法被final修飾,而被final關(guān)鍵字修飾的方法為最終方法,子類不能對(duì)該方法進(jìn)行重寫(xiě)。因此,當(dāng)在父類中定義某個(gè)方法時(shí),如果不希望被子類重寫(xiě),就可以使用final關(guān)鍵字修飾該方法。


final關(guān)鍵字修飾變量

Java中被final修飾的變量為常量,常量只能在聲明時(shí)被賦值次,在后面的程序中,其值不能被改變。如果再次對(duì)該常量賦值,則程序會(huì)在編譯時(shí)報(bào)錯(cuò)。 下面通過(guò)一 個(gè)案例進(jìn)行驗(yàn)證,如文件4-9所示。

文件4-9 Example09.java

public class Example09 {
    public static void main (String[] args) {
        final int AGE = 18;    //第一次可以賦值
        AGE = 20;    //再次賦值會(huì)報(bào)錯(cuò)
    }
}

編譯文件4-9,編譯器報(bào)錯(cuò),如圖4-10所示。

編譯器報(bào)錯(cuò)

在文件4-9中,當(dāng)?shù)?行代碼對(duì)AGE進(jìn)行二次賦值時(shí),編譯器報(bào)錯(cuò)。原因在于使用final定義的常量本身不可被修改。

注意:在使用final聲明變量時(shí),要求全部的字母大寫(xiě)。如果一個(gè)程序中的變量用public static final聲明,則此變量將成為全局變量,如下面代碼所示。

public static final String NAME = "哈士奇"


猜你喜歡:

Java中this關(guān)鍵字的常見(jiàn)用法有哪些?

Java算法之冒泡排序【超詳細(xì)】

Java中switch條件語(yǔ)句的用法

Java中for循環(huán)語(yǔ)句的用法

傳智教育java開(kāi)發(fā)培訓(xùn)課程

0 分享到:
和我們?cè)诰€交談!