Java中關鍵字(abstract,static,final,this,super)

1,abstract:可以修飾類和方法。修飾後就變成了抽象方法,抽象類

(1)如果修飾類的話,此類必須被繼承使用,abstrcat最大程度的將子類的共性抽出來。abstract雖然不能生成對象,但可以聲明,作爲編譯時類型,final與abstract不能同時出現。

(2)一個有抽象方法的類,一定是抽象類,但一個抽象類的不一定有抽象方法。

(3)抽象類不可創建對象,但可以有構造函數(子類可以繼承)。

(4)子類繼承抽象類,必須實現其中的抽象方法,除非子類也是抽象類。

(5)abstract不可與private、static、final、native、synchronized

2.static

(1)作用:方便在沒有創建對象的情況下時調用(方法/變量)。只要在類加載了,就可以通過類名調用。

(2)在靜態方法中不能調用非靜態的成員變量或成員方法,但非靜態的方法可以訪問靜態的成員變量或方法。

(3)靜態變量:靜態變量被所有的對象所共享,在內存中只有一個副本,它當且僅當在類加載的時候會被初始化。非靜態成員是對象所擁有,在創建對象的時候,存在多個副本,對象擁有的副本互不影響。

(4) static關鍵字還有一個比較關鍵的作用就是 用來形成靜態代碼塊以優化程序性能。static塊可以置於類中的任何地方,類中可以有多個static塊。在類初次被加載的時候,會按照static塊的順序來執行每個static塊,並且只會執行一次。

(5)static是不允許用來修飾局部變量

題:public class Test extends Base{

 

    static{

        System.out.println("test static");

    }

     

    public Test(){

        System.out.println("test constructor");

    }

     

    public static void main(String[] args) {

        new Test();

    }

}

 

class Base{

     

    static{

        System.out.println("base static");

    }

     

    public Base(){

        System.out.println("base constructor");

    }

}

base static test static base constructor test constructor

先加載類,再new 執行構造。

3,final

(1)修飾類:這個類不會被繼承,final類中的所有成員方法都會被隱式地指定爲final方法。

(2)修飾變量:對於一個基本類型的變量,一旦在初始化了之後就不能再改變。如果是引用類型的變量,在初始化之後便不能改變其引用,但是它指向的對象的內容是可變的。

(3)修飾方法:把方法鎖定,以防任何繼承類修改它的含義,。類的private方法會隱式地被指定爲final方法。

題:

MyClass myClass1 = new MyClass();

MyClass myClass2 = new MyClass();

System.out.println(myClass1.i);

System.out.println(myClass1.j);

System.out.println(myClass2.i);

System.out.println(myClass2.j);

 

class MyClass {

public final double i = Math.random();

public static double j = Math.random();

}

結果:

0.4527538724400425

0.56876948705211

0.4132824472418981

0.56876948705211

可見final與static的區別。

4 this

(1)是一個引用,它指向自身的引用。一般在類的構造函數中使用,區分開形參和成員變量。

5.super:

(1)用來引用父類的成分。一種是引用被子類隱藏的父類成員,一種是引用父類的構造。

(2)可用super.成員變量或成員方法。如在父類未找到,則繼續向上尋找。

(3)在子類的構造函數中如沒有super方法,就會默認super()方法調父類構造。

(4)對於父類中包含有參數的構造方法,子類可以通過在自己的構造方法中使用super關鍵字來引用,而且必須是子類構造函數方法中的第一條語句。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章