程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java中的final修飾符,Javafinal修飾符

Java中的final修飾符,Javafinal修飾符

編輯:JAVA綜合教程

Java中的final修飾符,Javafinal修飾符


      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修飾的引用型變量時,變量的值時固定不變的,而變量所指對象的屬性值是可變的。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved