1. 程式人生 > >Java中的作用域有哪些

Java中的作用域有哪些

在計算機程式中,宣告在不同地方的變數具有不同的作用域,例如區域性變數、全域性變數等。在Java語言中,作用域是由花括號的位置決定的,它決定了其定義的變數名的可見性生命週期
在Java語言中,變數的型別主要有3種:成員變數、靜態變數和區域性變數。

  1. 類的成員變數的作用範圍與類的例項化物件的作用範圍相同,當類被例項化時,成員變數就會在記憶體中分配空間並初始化,直到這個被例項化物件的生命週期結束時,成員變數的生命週期才結束。
  2. 被static修飾的成員變數稱為靜態變數或全域性變數,與成員變數不同的是,靜態變數不依賴於特定的例項,而是被所有例項所共享,也就是說,只要一個類被載入,JVM就會給類的靜態變數分配儲存空間。因此,就可以通過類名和變數名來訪問靜態變數。
  3. 區域性變數的作用域與可見性為它所在的花括號內。
成員變數的4種作用域對比:
作用域與可見性 當前類 同一package 子類 其他package
public
private × × ×
protected ×
default × ×
  1. public。表明該成員變數或方法對所有類或物件都是可見的,所有類或物件都可以直接訪問。
  2. private。表明該成員變數或方法是私有的,只有當前類對其具有訪問許可權,除此之外的其他類或者物件都沒有訪問許可權。
  3. protected。表明該成員變數或方法對自己及其子類是可見的,即自己和子類具有許可權訪問
    。除此之外的其他類或者物件都沒有訪問許可權。
  4. default。表明該成員變數或方法只有自己和與其同一包內的類可見。若父類與子類位於同一包內,則子類對父類的default成員變數或方法都有訪問許可權;若父類和子類位於不同包內,則沒有訪問許可權。
注意:

這些修飾符只能修飾成員變數,不能用來修飾區域性變數。private和protected不能用來修飾類。(只有public、abstract或final能用來修飾類)