一、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、介面(inte***ce)
1、介面定義:抽象方法和常量值的集合(所有的方法都是抽象方法)。它是一種特殊的抽象類(會生成乙個***.class檔案,編譯器會自動在inte***ce關鍵字前加上abstract)。
2、特點:
a、介面裡的常量預設都是public static final來修飾的(如果什麼都不寫,編譯器會自動幫你寫上)。
b、介面裡的方法預設都是public abstract來修飾的(如果是什麼都不寫,編譯器會自動幫你寫上)。
c、可以用extends繼承已有的介面。
d、乙個類,可以用implements實現乙個或多個介面中的所有方法(包括這個介面的父介面中的方法)。
e、乙個抽象類,可以implements實現介面中的
部分方法
f、乙個類,可以extends乙個父類的同時implements多個介面,但是extends關鍵字必須在implements關鍵字之前。
Final與抽象類
一 final final 可以用來修飾乙個變數 方法 類 修飾屬性 修飾乙個變數,這個變數就變成了常量 修飾方法 方法不能被子類重寫 修辭類 這個類不能被繼承 二 抽象類 抽象類 是一種模板模式,抽象類為所有子類提供了乙個通用的模板子類可以在這個模板上進行拓展 抽象的定義 乙個被abstract修...
java中的抽象類
抽象類是指類被修飾符abstract修飾的類。抽象類不能夠建立物件。抽象方法是只有方法名,沒有方法體,沒有具體的實現。含有抽象方法的類一定是抽象類!抽象的動物類 public abstract class animal在繼承關係中,子類繼承抽象的父類,如果在子類中沒有實現父類的抽象方法,則子類一定是...
java 中的抽象類
在自上而下的繼承層次結構中,位於上層的類更具有通用性,甚至可能更加抽象。從某種角度看,祖先類更加通用,它只包含一些最基本的成員,人們只將它作為派生其他類的基類,而不會用來建立物件。甚至,可以只給出方法的定義而不實現,由子類根據具體需求來具體實現。這種只給出方法定義而不具體實現的方法被稱為抽象方法ab...