Java面向對象 修飾符

我們對java變量和方法的修飾符都比較瞭解,但卻很少注意到類的修飾符,今天這個問題突然被問到,現在整理一下:


java的修飾符有:權限修飾符:publicprotecteddefaultprivate

                修飾符:abstractstaticfinal


    public   使用對象:最廣,類、接口、變量、方法

    protected使用對象:變量、方法 注意:不能修飾類(外部類)

    default  使用對象:類、接口、變量、方法。(即缺省,什麼也不寫)

    private  使用對象:變量、方法 注意:不能修飾類(外部類)


    abstract使用對象:類、接口、方法

    static  使用對象:類、變量、方法、初始化函數(注意:修飾類時只能修飾 內部類

    final   使用對象:類、變量、方法


    transient:告訴編譯器,在類對象序列化的時候,此變量不需要持久保存

    volatile:指出可能有多個線程修改此變量,要求編譯器優化以保證對此變量的修改能夠被正確的處理


    native:用該修飾符定義的方法在類中沒有實現,而大多數情況下該方法的實現是用CC++編寫的。

    synchronized:修飾方法,多線程的支持



類分外部類和內部類,他們的訪問控制是相同的嗎

   外部類是相對於內部類而言的,內部類是定義在類裏面的類。


外部類的修飾符有:

default(缺省,不寫):類定義時前面未加任何修飾符,表示同一個包中可見。

public:修飾類時表示該類能被項目中所有類可見

abstract:表示是抽象類

final:表示類不可以被繼承

scrictpf:(java關鍵字) 當對一個類或接口使用 strictfp 關鍵字時,該類中的所有代碼,包括嵌套類型中的初始設定值和代碼,都將嚴格地進行計算。嚴格約束意味着所有表達式的結果都必須是 IEEE 754 算法對操作數預期的結果,以單精度和雙精度格式表示


內部類又分:成員內部類、局部內部類、靜態內部類、匿名內部類

  成員內部類:作爲外部類的一個成員存在,與外部類的屬性、方法並列

  局部內部類:定義在外部類的方法體裏面的類

  靜態內部類:使用static修飾的內部類

  匿名內部類:就是沒有名字的內部類


成員內部類修飾符有:

public

protected

privateprivate不能修飾外部類,

abstract

final

static:可以當做普通類使用,而不用先實例化一個外部類。(用他修飾後,就成了靜態內部類了)

strictfp:(java關鍵字) strict float point (精確浮點)。(可修飾類、接口、方法)


局部內部類:

  局部內部類就是在類內的方法中定義的類。

  局部類有一個優勢,即對外部世界完全隱藏。即使是同一個類中其他的方法也不能訪問它。

  局部類可以訪問包含它的外部類,同時也可以訪問局部變量。


  局部類不能用publicprivate訪問說明符進行聲明,他的作用域被限定在這個方法中,



訪問權限符與繼承:

  這裏的訪問權限修飾符指的是:修飾成員變量和方法。分兩種情況:

  1.子類與父類在同一個包中:

     此時只有private修飾的變量和方法不能被訪問。

  2.子類與父類不在同一個包中:

     此時privatedefault均不能被訪問,protectedpublic可以



接口修飾符:

  public:所有包可見

  default:(缺省)同一個包中可見

  strictfp:java關鍵字) strict float point (精確浮點)


  接口的變量總是需要定義成:public static final 類型 名稱,但可以不用寫的這麼複雜,默認就是public static final


  接口的方法只能使用publicabstract修飾。

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