概念:final的意思爲最終,不可變。final是個修飾符,它能夠用來修飾類,類的成員,以及局部變量。不能修飾構造方法。this
特色:code
1.final修飾的類不能夠被繼承,但能夠繼承別的類。對象
class Yy {} final class Fu extends Yy{} //能夠繼承Yy類 class Zi extends Fu{} //不能繼承Fu類
2.final修飾的方法不能夠被子類重寫,但父類中沒有被final修飾方法,子類重寫後能夠加final。繼承
class Fu { // final修飾的方法,不能夠被覆蓋,但能夠繼承使用 public final void method1(){} public void method2(){} } class Zi extends Fu { //重寫method2方法 public final void method2(){} }//加入Java開發交流君樣:756584822一塊兒吹水聊天
3 final修飾的變量稱爲常量,這些變量只能賦值一次。並且終身不變。接口
final int i = 20; i = 30; //賦值報錯,final修飾的變量只能賦值一次
4.引用類型的變量值爲對象地址值,地址值不能更改,可是地址內的對象屬性值能夠修改。開發
final Person p = new Person(); Person p2 = new Person(); p = p2; //final修飾的變量p,所記錄的地址值不能改變 p.name = "小明";//能夠更改p對象中name屬性值
5.修飾成員變量,須要在建立對象前賦值,不然報錯。(當沒有顯式賦值時,多個構造方法的均須要`爲其賦值。)編譯
class Demo { //直接賦值 final int m = 100; //final修飾的成員變量,須要在建立對象前賦值,不然報錯。 final int n; public Demo(){ //能夠在建立對象時所調用的構造方法中,爲變量n賦值 n = 2016; } }
概念:static是靜態修飾符,通常用來修飾類中的成員。不建立對象,就能夠調用方法。class
特色:變量
1.被static修飾的成員變量屬於類,不屬於這個類的某個對象。(也就是說,多個對象在訪問或修改static修飾的成員變量時,其中一個對象將static成員變量值進行了修改,其餘對象中的static成員變量值跟着改變,即多個對象共享同一個static成員變量)數據類型
class Demo { public static int num = 100; } class Test { public static void main(String[] args) { Demo d1 = new Demo(); Demo d2 = new Demo(); d1.num = 200; System.out.println(d1.num); //結果爲200 System.out.println(d2.num); //結果爲200 } }
2.被static修飾的成員能夠而且建議經過類名直接訪問。
訪問靜態成員的格式:
類名.靜態成員變量名 類名.靜態成員方法名(參數) 對象名.靜態成員變量名 ------不建議使用該方式,會出現警告 對象名.靜態成員方法名(參數) ------不建議使用該方式,會出現警告
class Demo { //靜態成員變量 public static int num = 100; //靜態方法 public static void method(){ System.out.println("靜態方法"); } } class Test { public static void main(String[] args) { System.out.println(Demo.num); Demo.method(); } }
注意事項:
class Demo { //成員變量 public int num = 100; //靜態方法 public static void method(){ //this.num; 不能使用this/super。 System.out.println(this.num); }//加入Java開發交流君樣:756584822一塊兒吹水聊天 }
class Demo { //成員變量 public int num = 100; //靜態成員變量 public static int count = 200; //靜態方法 public static void method(){ //System.out.println(num); 靜態方法中,只能訪問靜態成員變量或靜態成員方法 System.out.println(count); } }
3.main方法爲靜態方法僅僅爲程序執行入口,它不屬於任何一個對象,能夠定義在任意類中。
4.多態調用方法中,編譯看=左邊,父類有,編譯成功,父類沒有,編譯失敗
概念:開發中,咱們想在類中定義一個靜態常量,一般使用public static final修飾的變量來完成定義。此時變量名所有大寫,多個單詞使用下劃線鏈接。
定義格式:public static final 數據類型 變量名 = 值;
public class School { public static final String SCHOOL_NAME = "北京大學"; public static void method(){ System.out.println("一個靜態方法"); }//加入Java開發交流君樣:756584822一塊兒吹水聊天 }
當咱們想使用類的靜態成員時,不須要建立對象,直接使用類名來訪問便可。
System.out.println(Company.SCHOOL_NAME); Company.method(); // 調用一個靜態方法
注意:
接口中的每一個成員變量都默認使用public static final修飾。
全部接口中的成員變量已經是靜態常量,因爲接口沒有構造方法,因此必須顯示賦值。能夠直接用接口名訪問。
interface Inter { public static final int COUNT = 100; }
訪問接口的成員變量:
Inter.COUNT