首先 final 和static 是完全沒有關係的。
final 作用:
1. final 修飾屬性,表示屬性【只能賦值一次】,(1)基本型別:值不能被修改;(2)引用型別:引用不可以被修改該。
如:public final int rows = 1;
此時變數rows不管在什麼地方引用,都不能被再次賦值。
但是,可以先只定義變數,不賦值。
private final int id //只定義id。
private static int taskcount =0;
private final int id = --taskcount; //給id賦值。此時id在類中值是 -1 。並且不能再改變。
public class father}
2 . final 修飾方法,表示方法不可以重寫,但是可以被子類訪問(如果方法不是 private 型別話)。
public class son extends father*/
private string str="";
private int id=1;
public son()
public son(string str,int id)
/** 注意,此時的子類是可以過載父類的方法的
*/public final string fun(string str)
//子類呼叫父類方法
public static void main(string args)
3. final 修飾類,表示類不可以被繼承。
二. static
1..static 含義:靜態的,被 static 修飾的方法和屬性只屬於類不屬於類的任何物件。所以通過static 修飾的變數和方法可以直接通過類名呼叫。因此通過static修飾的變數和方法共享一片類存空間。
2..static 可以修飾【內部類】、方法和成員變數。
3..static【不可以修飾外部類】、【不可以修飾區域性變數】(因為 static 本身就是定義為類級別的,所以區域性級別的變數是不可以用 static 修飾的)。
public class staticbase
public static void main(string args)
}
static和final的區別
修飾變數 靜態變數隨著類載入時被完成初始化,記憶體只有乙個,且jvm也只會為他分配一次記憶體,所有類共享靜態變數。修飾方法 在類載入的時候就存在,不依賴任何例項。static方法必須實現,不能用abstract修飾。即abstract修飾的方法不可謂static。修飾 塊 在類載入完成之後就會執行靜...
final和static的區別
final可以修飾類 成員方法和變數 成員變數和區域性變數 1.final修飾的類不可以被繼承 2.final修飾的方法不可以被重寫 3.final修飾的變數表示常量,只能被賦值一次 注意 final修飾成員變數時,預設沒有初始值。賦值方法 選擇其中一種 a.宣告時賦值 b.構造方法中賦值 c.塊中...
final和static的區別
一.static的作用 靜態方法只能訪問靜態變數,靜態變數一般使用類名訪問,靜態語句塊先於程式執行 static的的作用從三個方面來談,分別是靜態變數 靜態方法 靜態類。1.靜態變數 宣告為static的靜態變數實質上就是全域性變數,當宣告乙個物件時,並不產生static變數的拷貝,而是該類所有例項...