1. 程式人生 > >Java 四種訪問修飾符區別

Java 四種訪問修飾符區別

   在Java程式語言中有四種許可權訪問控制符,這四種訪問許可權的控制符能夠控制類中成員的可見性。
    一、public
     (1)定義:public是公共的,被public所修飾的成員可以在任何類中都能被訪問到。
     (2)修飾的成分:
        public能用來修飾類,在一個java原始檔中只能有一個類被宣告為public,而且一旦有一個類為public,那這個java原始檔的檔名就必須要和這個被public所修飾的類的類名相同,否則編譯不能通過。說到這裡,穿插多一點知識。一個類作為外部類的時候只能被public或者預設訪問修飾符所修飾,但是一個類如果作為內部類的時候,則可以被四種訪問修飾符所修飾,因為一個類作為內部類的時候,就作為外部類的一個成員屬性了,因此可以有四種訪問修飾符修飾,這是內部類和外部類的一個區別。
        public用來修飾類中成員(變數和方法),被public所修飾的成員可以在任何類中都能被訪問到。通過操作該類的物件能隨意訪問public成員。
        public在類的繼承上的體現,被public所修飾的成員能被所有的子類繼承下來。
   二、protected
       (1)定義:protected是受保護的,受到該類所在的包所保護。
       (2)作用域:被protected所修飾的成員會被位於同一package中的所有類訪問到。同時,被protected所修飾的成員也能被該類的所有子類繼承下來。(注意:這裡是指同一個package或者不同的package中的子類都能訪問)
   三、friendly(預設,預設的)
        (1)定義:friendly是友好的,即在成員的前面不寫任何的訪問修飾符的時候,預設就是友好的。所謂友好的,是對同一package的類友好。
        (2)作用域:同一package中的所有類都能訪問。被friendly所修飾的成員只能被該類所在同一個package中的子類所繼承下來。(也就是說只有在同一個package中的子類才能訪問到父類中friendly修飾的成員)
   四、private
          (1)定義:private是私有的,即只能在當前類中被訪問到,它的作用域最小。
  
下面用一個表格說明四個訪問控制符的作用域:
作用域         當前類       同一package       子孫類       其他package的類
public             √                   √                  √                     √
protected        √                   √                    √                     ×
friendly           √                  √                    ×                     ×
private             √                   ×                   ×                     ×