Java 修飾符

Java 修飾符

Java語言提供了很多修飾符,主要分爲以下兩類:

  • 訪問修飾符
  • 非訪問修飾符

訪問控制修飾符

Java中,可以使用訪問控制符來保護對類、變量、方法和構造方法的訪問。Java 支持 4 種不同的訪問權限。

  • default (即默認,什麼也不寫): 在同一包內可見,不使用任何修飾符。使用對象:類、接口、變量、方法。
  • private : 在同一類內可見。使用對象:變量、方法。 注意:不能修飾類(外部類)
  • public : 對所有類可見。使用對象:類、接口、變量、方法
  • protected : 對同一包內的類和所有子類可見。使用對象:變量、方法。 注意:不能修飾類(外部類)。

幫助理解:

  • public:在當前類 ,同一包內,子孫類(同一包),子孫類(不同包),其他包中都是可以訪問到的
  • protected ::在當前類 同一包內 ,子孫類(同一包),子孫類(不同包)可以訪問到的,其他包是不可以的
  • default當前類 同一包內 ,子孫類(同一包)可以訪問到的, 子孫類(不同包)和其他包是不可以的
  • private當前類可以訪問到,同一包內,子孫類(同一包),子孫類(不同包)和其他包都是不可以訪問到的

1:默認訪問修飾符-不使用任何關鍵字

//變量和方法的聲明可以不使用任何修飾符。
	void demo(){
		int i=10;
	}

2:私有訪問修飾符-private*

私有訪問修飾符是最嚴格的訪問級別,所以被聲明爲 private 的方法、變量和構造方法只能被所屬類訪問,並且類和接口不能聲明爲 private。
聲明爲私有訪問類型的變量只能通過類中公共的 getter 方法被外部類訪問。
public class NameDemo {
   private String name;
   public String getName() {
      return this.name;
   }
   public void setName(String name) {
      this.name = name;
   }
}

代碼NameDemo這個類中,name是一個私有變量,其他類不可以直接訪問賦值,那麼類中提供了兩個public修飾的方法,可以使外部類訪問到

3:公有訪問修飾符-public
被聲明爲 public 的類、方法、構造方法和接口能夠被任何其他類訪問。

4:受保護的訪問修飾符-protected(修飾符中比較需要注意的)

在這裏推薦一片文章,菜鳥驛站,Java protected 關鍵字詳解

非訪問修飾符

static 修飾符

  1. 靜態變量

static變量也稱作靜態變量。靜態變量和非靜態變量的區別是:靜態變量被所有的對象所共享,在內存中只有一個副本,它當且僅當在類初次加載時會被初始化。而非靜態變量是對象所擁有的,在創建對象的時候被初始化,存在多個副本,各個對象擁有的副本互不影響。

  1. 靜態方法

static方法一般稱作靜態方法,由於靜態方法不依賴於任何對象就可以進行訪問,因此對於靜態方法來說,是沒有this的,因爲它不依附於任何對象。並且由於這個特性,在靜態方法中不能訪問類的非靜態成員變量和非靜態成員方法,因爲非靜態成員方法/變量都是必須依賴具體的對象才能夠被調用。但是在非靜態成員方法中是可以訪問靜態成員方法/變量的。

final 修飾符

  1. final變量:被 final 修飾的實例變量必須顯式指定初始值,被修飾並賦值後不能再重新賦值
//final 修飾符通常和 static 修飾符一起使用來創建類常量。
public static final int a=10;
  • final 方法:被final修飾的方法是可以被繼承,但是不能重寫

abstract 修飾符

  • 抽象類:不能用來實例化對象,聲明抽象類的唯一目的是爲了將來對該類進行擴充。

  • 特別注意一個類不能同時被 abstract 和 final 修飾

抽象方法

  • 沒有任何實現的方法,該方法的的具體實現由繼承類提供。
  • 抽象方法不能被聲明成 final 和 static。
  • 任何繼承抽象類的子類必須實現父類的所有抽象方法,除非該子類也是抽象類。
  • 如果一個類包含多個抽象方法,那麼該類必須聲明爲抽象類。抽象類可以不包含抽象方法。

synchronized 修飾符

  • synchronized 關鍵字聲明的方法同一時間只能被一個線程訪問。synchronized 修飾符可以應用於四個訪問修飾符。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章