JAVA中final修飾符小結


一、final關鍵字可以用來修飾類、方法、變量。各有不同。

A、修飾類(class)。 
     1、該類不能被繼承。 
     2、類中的方法不會被覆蓋,因此默認都是final的。 
     3、用途:設計類時,如果該類不需要有子類,不必要被擴展,類的實現細節不允許被改變,那么就設計成final類

B、修飾方法(method) 
     1、該方法可以被繼承,但是不能被覆蓋。 
     2、用途:一個類不允許子類覆蓋該方法,則用final來修飾 
     3、好處:可以防止繼承它的子類修改該方法的意義和實現;更為高效,編譯器在遇到調用fianal方法轉入內嵌機制,提高了執行效率。 
     4、注意:父類中的private成員方法不能被子類覆蓋,因此,private方法默認是final型的(可以查看編譯后的class文件)

C、修飾變量(variable) 
     1、用final修飾后變為常量。包括靜態變量、實例變量和局部變量這三種。 
     2、特點:可以先聲明,不給初值,這種叫做final空白。但是使用前必須被初始化。一旦被賦值,將不能再被改變。

D、修飾參數(arguments) 
     1、用final修飾參數時,可以讀取該參數,但是不能對其作出修改。

二、抽象類&&接口

A、抽象類(abstract class) 
     1、抽象方法(abstract method):不含方法體的方法,它由繼承它子類根據需求去實現,必須用abstract修飾。此外,該方法必須對子類可見,因此要加只能加public 或者 protected!。 
     2、抽象類:至少包含一個抽象方法的類(可以包含非抽象方法)。必須用abstract修飾。 
     3、特點:抽象類不能被實例化(也就是不能new對象);含有抽象方法的類必須聲明為抽象類;一個類只有實現了抽象類中的所有方法才能被實例化,否則它依然是抽象類。

B、接口(interface) 
     1、接口定義:抽象方法和常量值的集合(所有的方法都是抽象方法)。它是一種特殊的抽象類(會生成一個xxx.class文件,編譯器會自動在interface關鍵字前加上abstract)。 
     2、特點: 
          a、接口里的常量默認都是public static final來修飾的(如果什么都不寫,編譯器會自動幫你寫上)。 
          b、接口里的方法默認都是public abstract來修飾的(如果是什么都不寫,編譯器會自動幫你寫上)。 
          c、可以用extends繼承已有的接口。 
          d、一個類,可以用implements實現一個或多個接口中的所有方法(包括這個接口的父接口中的方法)。 
          e、一個抽象類,可以implements實現接口中的部分方法 
         
f、一個類,可以extends一個父類的同時implements多個接口,但是extends關鍵字必須在implements關鍵字之前。

轉自博客:blog.csdn.com/whuslei


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM