[转]java构造方法的访问修饰符
http://my.oschina.net/u/1464678/blog/210359
1.???????類(class)
?
可見性修飾符:?public—在所有類中可見,在其他包中可以用import導入。
???????????????????????????? 缺省—就是沒有修飾符,在同一個包中的類中可見,在其他包中不能用import導入。
??????????????修飾符:final—終態類,表示該類不能被繼承
????????????????????????????abstract—抽象類,不能新建對象
?
2.???????變量(variable)
?
Java中變量有兩種,方法變量和字段變量
方法變量只能用一個修飾符:final—表示常量,不能修改
下面是字段變量的修飾符
????????可見性修飾符:public—在任何類中可見
???????????????????????????? ? ? ???protected—???????在子類中或同一個包中可見
???????????????????????????? ? ? ???private—只在本類中可見,子類中也不可見
????????????????????????????????????缺省—在同一個包中可見,子類不在一個包中,子類中也不可見??
????????修飾符:static—靜態變量,被類的所有實例共享
????????????????????????final—常量,定義后不能修改
*transient—告訴編譯器,在類對象序列化的時候,此變量不需要持久保存
*volatile—指出可能有多個線程修改此變量,要求編譯器優化以保證對此變量的修改能夠被正確的處理
這兩帶*的不是很常用,但也是Java的修飾符,我也不是很清楚
?
3.??????方法(method)
?
???可見性修飾符:public—在任何類中可見
???????????????????????????? ??protected—在子類中或同一個包中可見
??????????????????????????????private—只在本類中可見,子類中也不可見
??????????????????????????????缺省—在同一個包中可見,子類不在一個包中,子類中也不可見
???修飾符:???static—靜態方法,并不需要創建類的實例就可以訪問靜態方法
??????????????????????final—常方法,所有子類不能覆蓋該方法,但可以重載
????????????????????? abstract—抽象方法,在抽象類中沒有實現的方法
????????????????????? native—本地方法,參見Java Native Interface(JNI)
???????????????????????????? synchronized —在多線程中,synchronized方法調用時,其他所有方法不能調用該方法
?
4.???????接口(interface)
?
?????????可見性修飾符:public—所有類中可見
?????????????????????????????????????缺省—同一個包中可見
?????????接口中的變量總是需要定義為“?public static final?接口名稱”,但可以不包含這些修飾符,編譯器默認就是這樣???
因為接口是不可能有直接實例的,那樣的話也就是不可能修改(final),也不可能通過實例訪問的(static)。?????
?????????接口中的方法只能使用public和abstract修飾符??
?
?
==================================================================================================
public:可以被任何類訪問。 final:使用些修飾符的類不可以被繼承。 abstract:如果要使用abstract類,需要建立一個繼承自它的新類,來實現其中的抽象方法。變量: 1,Java中沒有全局變量,只有方法變量、實例變量(類中非靜態變量)、類變量(類中靜態變量); 2,方法中的變量不可以有訪問修飾符,所以訪問修飾符只是針對類中定義的變量; 3,聲明實例變量時,如果沒有賦初值,將會被初使化為Null(引用類型)或是0、false(原始類型); 4,可以通過實例變量初使化器來初使化較復雜的實例變量,實例變量初使化器是一個用{}包含的語句塊,在類的構造器被 調用時運行,運行于父類構造器之后,構造器之前; 5,類變量(靜態變量)也可以通過變量初始化器進行初始化,類變量的初使化器是一個用static{}包括起來的語句塊,而且只可以被初使化一次。 訪問修飾符: public:可以被任何類訪問。 protected:可以被同一包中的所有類訪問;也可以被子類訪問,即使子類沒有在同一包內。 private:只能被當前類中的方法訪問。 缺省:無訪問修飾符,可以被同一包中的所有類訪問;如果子類沒有在同一包中,不可訪問。 修飾符: static:靜態變量(又稱為類變量,實例變量等),可以被類的所有實例所共享,而且在不創建類的實例的情況下也可以對其進行訪問。 final:常量,其值只能分配一次,而且不可更改;注意不要使用const,雖然它和C、C++中的const關鍵字含義一樣。 transient:即告訴編譯器,在該類的對象進行序列化的時候,這個變量不需要持久保存。這么做的主要原因是這個變量可以通過其它的變量來獲取,使用它主要是從性能的角度考慮。 volatile:指出可能有多個線程修改此變量,要求編譯器優化以保證對此變量的修改能夠被正確地處理。 方法: 1,類的構造方法不能有修飾符、返回類型和throws子句 2,類的構造器方法被調用時,它首先調用父類的構造器方法,然后運行實例變量和靜態變量的初使化器,然后才運行該類構造器本身。 3,如果構造器方法沒有顯示調用一個父類的構造器,那么編譯器會為其自動加上一個默認的super(),而父類若沒有默認的無參數構造器,編譯器就會報錯。super()必須是構造器方法的第一個子句。 4,注意理解private類構造器方法使用的技巧。 static:靜態方法(又稱為類方法、以及實例方法等),它提供不依賴于類實例的服務,也就是說,并不需要創建類實例就可以訪問靜態方法。 final:防止任何子類重載該方法;注意不要使用const,雖然它和C、C++中的const關鍵字含義一樣。 abstract:抽象方法,類中已聲明但沒有實現的方法,不能將static方法、final方法以及構造器方法聲明為abstract。 native:用該修飾符修飾的方法在類中并沒有實現,大多數情況下這類方法的實現是由C或C++編寫的。可以參見Sun的Java Native接口(JNI),JNI提供了運行時加載一個native方法的實現,并將其與一個Java類關聯。 synchronized:多線程支持,當一個線程調用該方法時,就會為這個對象加一個鎖,從而其它線程就不可以再次調用這個方法,直到前一個線程將其釋放。
接口: 1,接口不能定義任何其聲明方法的實現。 2,接口中的變量總是需要定義為“public static final 接口名稱”,也可以不包含這些修飾符,但編譯器默認就是這樣,顯示的包含修飾符主要是為了程序邏輯清晰。
轉載于:https://www.cnblogs.com/xunbu7/p/5111684.html
總結
以上是生活随笔為你收集整理的[转]java构造方法的访问修饰符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32M CUBE实现printf打
- 下一篇: android软件开发基础课程(一)