Java中訪問修飾符和構造函數的一點總結

Java訪問修飾符

訪問修飾符 作用范圍
public 完全開發
private 只能本類訪問
protected 同包及子類訪問
default(無修飾符時) 同包訪問

Java用于類的修飾符(2個)和限定符(2個)

訪問修飾符 作用范圍
public 完全開發
default(無) 同包訪問

注意:內部類可以擁有更多的訪問修飾符


限定符 描述
abstract 指定為抽象類
final 指定為最終類,不可被繼承

Java用于成員變量的修飾符

  • public
  • protected
  • private
  • static
  • final
  • transient
  • volatile
限定符 描述
static 類屬性,可通過類名直接調用
final 該成員不能被重寫,即定義常量
transient 不序列化
volatile 可被多個線程訪問 (同步變量)

限定詞含義:

限定符 描述
static 類屬性,可通過類名直接調用
final 該成員不能被重寫,即定義常量
transient 不序列化
volatile 可被多個線程訪問 (同步變量)

Java用于成員方法的修飾符

  • public
  • protected
  • private
  • static
  • final
  • abstract
  • native
  • synchronized
限定符 描述
static 類(靜態)方法,可通過類名直接調用
final 方法不能被重寫
native 集成其它語言的代碼 本地方法
abstract 抽象方法,沒有方法體
synchronized 控制多個并發線程的訪問 (同步方法)

限定詞含義:

限定符 描述
static 類(靜態)方法,可通過類名直接調用
final 方法不能被重寫
native 集成其它語言的代碼 本地方法
abstract 抽象方法,沒有方法體
synchronized 控制多個并發線程的訪問 (同步方法)

構造函數的一些注意事項

在 Java 中,無論是 explicit 還是 implicit 方式,都要求在子類的構造方法中調用其父類的構造方法。

如果父類無構造方法(其實是一個默認無參的構造方法),那么子類的構造方法中會自動進行調用;如果 父類有自己的構造方法(這時父類不會有默認無參的構造方法),那么在子類的構造方法中,必須要調用父類的某個構造方法,而且必須是在構造方法的第一個語句 中進行調用。 究其原因,想必是 Java 語言設計者,要求子類有責任保證它所繼承的父類盡快進入到一個穩定、完整的狀態中。試想,如果沒有這個約束,那么子類的某個繼承自父類的方法可能會使用到父類中的一些變量,而這些變量并沒有進行初始化,從而產生一些難以預料的后果。

  • 構造函數必須滿足的語法規則:方法名必須與類名相同;不要聲明返回類型;不能被static、final、synchronized、abstract、native等修飾。

  • 構造方法可以被重載,來表達對象的多種初始化行為。在重載構造方法中可以使用this語句來調用其他構造方法,使用時應該注意:如果在構造方法中使用了this語句,則必須作為構造方法的第一條語句;只能在一個構造方法中用this語句來調用類的其他構造方法,而不能在成員方法中調用類的構造方法;只能通過this語句來調用其他構造方法,不能通過方法名來直接調用構造方法。

  • 在java中,如果用戶定義的類中沒有提供任何構造方法,java語言會自動提供一個默認的構造方法,該默認構造方法沒有參數,用public修飾,且方法體為空。當然,程序中也可以顯示的定義默認構造方法。

  • 如果類中顯示定義了一個或多個構造方法,并且所有的構造方法都帶有參數,那么這個類就失去了java語言為其準備的默認構造方法,此時若使用該類的默認構造方法(即不含參數的構造方法)時就是編譯出錯。

  • 父類的構造方法不能被子類繼承,但是,在子類的構造方法中可以通過super語句調用父類的構造方法。使用super語句應該注意:在子類的構造方法中使用super語句,它必須作為第一條語句。

  • 在創建子類的對象時,java虛擬機首先執行父類的構造方法,然后再執行子類的構造方法,在多級繼承的情況下,將從繼承樹的最上層得父類開始,依次執行各個類的構造方法,這可以保證子類對象從所有直接或間接父類中繼承的實例變量都被正確的初始化。

  • 如果子類的構造方法中沒有用super語句顯示調用父類的構造方法,那么通過這個構造方法創建子類對象時,java虛擬機會自動先調用父類的默認構造方法,而此時若父類沒有默認構造方法時,就是編譯出錯。
    例如

class A //該類定義了含參數的構造方法,就失去了默認的無參的構造方法
{

    int i;

    A(int i) {

        this.i=i*2;

    }

}
public class B extends A
{

    B(int i) {//該構造方法沒有super顯示調用父類的構造方法,將自動調用父類的默認構造方法,而父類A沒有默認構造方法,這里將編譯錯誤

        System.out.println(i);

    }

    public static void main(String[] args) {

        B b=new B(2);

    }

}
  • 構造方法被調用的幾種方式:

  • 當前類的其他構造方法通過this語句調用它;

  • 當前類的子類的構造方法通過super語句調用它;

  • 在程序中通過new語句調用它。

  • 構造方法可以處于public、protected、private和默認四種訪問級別之一。當構造方法為private級別時,意味著只能在當前類訪問它,不能被繼承,不能被其他程序用new創建實例對象。可以對比其他幾種修飾符的作用:abstract修飾的類,不允許被實例化,這點和private修飾構造方法相同,但abstract修飾的類可以被繼承,擁有子類,可以創建子類的實例;final類禁止被繼承,這點和private修飾構造方法相同,但是final類可以用new創建實例對象。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容