歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java中的final修飾符

Java中的final修飾符

日期:2017/3/1 9:16:40   编辑:Linux編程

1.什麼時候可以選擇final修飾符

如果想讓一個類不被其他類繼承,不允許在有子類,這時候就要考慮用到final來修飾。

2.用final修飾的類

首先大家要明白,用final修飾的類是不能被繼承的,下面來看一個錯誤案例。

eg:

final class Penguin

{

}

class SubPenguin extends Penguin

{

}

此時這段代碼的class SubPenguin extends Penguin這行代碼會報錯:

The type SubPenguin cannot subclass the final class :翻譯:該類型SubPenguin不能繼承的最後類

即.Penguin類不能被繼承。

3.用final修飾的方法

eg:

class Penguin

{

public final void print(){}

}

class Subpenguin extends Penguin

{

public void print(){}//錯誤

}

此時這段代碼public void print(){}會報錯,提示錯誤信息:

cannot override the final method from Penguin:翻譯:無法覆蓋企鵝的最後方法

即.print方法不能被子類重寫。

4.用final修飾的變量

用final修飾的變量包括成員變量和局部變量,他們將變成常量,只能賦值一次。

public class Dog

{

final String name="小黃";//用final來修飾狗狗的姓名

public void setname(String name)

{

this.name=name; //錯誤,name不能在被賦值。

}

}

5.使用final修飾符的注意點

final可以用來修飾類,方法和屬性,不能修飾構造方法。

6.用final修飾的引用型變量,變量所指對象的屬性值是否能改變?

首先來看一個簡單的例子

//狗狗類

public class Dog

{

String name;//狗狗的姓名

//帶參構造,給狗狗的名字賦值

public Dog(String name)

{

this.name=name;

}

}

//測試類

class Test

{

public static void main(String[] args)

{

final Dog dog=new Dog("小黃");//實例化一個狗對象,用final修飾

dog.name="大黃";

dog=new Dog("小八");

}

}

這段代碼中dog對象被修飾為final成常量,其值不可變,但要注意的是dog.name="大黃";這行代碼並沒有錯,那麼dog=new Dog("小八")是錯的,也就是說,使用final修飾的引用型變量,變量不可以在指向另外的對象,但是所指變量的內容是可以改變的。

結論:使用final修飾的引用型變量時,變量的值時固定不變的,而變量所指對象的屬性值是可變的。

Copyright © Linux教程網 All Rights Reserved