使用exports package-name可以將一個套件公開或導出給其他模組使用,也可以將套件導出給特定模組使用。例如原本的模組zoo.animal.talks不限制對象導出套件zoo.animal.talks.content:
module zoo.animal.talks {
    exports zoo.animal.talks.content;
    // others
}  
以下將限制導出對象只給zoo.staff模組:
module zoo.animal.talks {
    exports zoo.animal.talks.content to zoo.staff;
    // others
}  
如此模組zoo.staff沒有影響,但其他模組將無法存取zoo.animal.talks.content套件。
當exports某一個套件時,該套件內所有public類別(class)、介面(interface)和列舉型別(enum)的public和protected成員都將允許被其他模組使用。private的成員依然限定在類別內部存取,default層級的成員也限定在套件內部存取,這2種的存取控制不受模組化影響。
下表列出完整的存取控制選項:
| 
   存取層級  | 
  
   模組內部  | 
  
   模組外部  | 
 
| 
   private  | 
  
   只能讓同一類別內部的其他成員存取  | 
  
   無法存取  | 
 
| 
   default  | 
  
   只能讓同一套件內的其他類別存取  | 
  
   無法存取  | 
 
| 
   protected  | 
  
   同一套件或具有繼承關係的子類別可以存取  | 
  
   若exports套件,則套件內具備繼承關係的子類別可以存取  | 
 
| 
   public  | 
  
   不受限制  | 
  
   若exports套件則不受限制  | 
 
沒有留言:
張貼留言