2021年12月25日 星期六

4.1. 使用exports

使用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)publicprotected成員都將允許被其他模組使用。private的成員依然限定在類別內部存取,default層級的成員也限定在套件內部存取,這2種的存取控制不受模組化影響。

下表列出完整的存取控制選項:

存取層級

模組內部

模組外部

private

只能讓同一類別內部的其他成員存取

無法存取

default

只能讓同一套件內的其他類別存取

無法存取

protected

同一套件或具有繼承關係的子類別可以存取

exports套件,則套件內具備繼承關係的子類別可以存取

public

不受限制

exports套件則不受限制


沒有留言:

張貼留言