使用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套件則不受限制 |
沒有留言:
張貼留言