在Java語言中,變量的類型主要有3種:成員變量、靜態變量和局部變量
首先說靜態變量跟局部變量
靜態變量不依賴於特定的實例,而是被所有實例共享,也就是說,只要一個類被加載,JVM就會給類的靜態變量分配
存儲空間。因此可以通過類名.變量名來訪問靜態變量
局部變量的作用域與可見性為它所在的花括號內
類的成員變量的作用范圍同類的實例化對象的作用范圍相同。當類被實例化的時候,成員變量就會在內存中分配空間,並初始化。
直到類的實例化對象的生命周期結束時,成員變量的生命周期才結束。
作用域與可見性 | 當前類 | 同一package | 子類 | 其他package |
public | √ | √ | √ | √ |
private | √ | × | × | × |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
重點說一下protected和default:
protected:表名成員變量或方法對該類自身,與它在同一個包中的其他類,在其他包中的該類的子類都可見
defaul:表明該成員變量或方法只有自己和與其位於同一包內的類可見。
若父類與子類處於同一包內,則子類對父類的default成員變量或方法都有訪問權限;若父類與子類處於不同的package內,則沒有訪問權限
還有需要注意的是,這些修飾符只能修飾成員變量,不能修飾局部變量。
private和protected不能用來修飾類