如何将方法设置为私有模块?

Jer*_*oen 1 d private-members

我在一个模块中有两个D类.我希望A类有一个属性,只能从A类和B类访问.我该怎么做?

class A {
    int a = 5; // Make this accessible to, and only to, B. 
}

class B {
    this(in A pA) {
        int b = pA.a;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*vis 7

private是私有的模块,而不是类.因此,将符号标记为private使得只有该模块中的内容才能访问它.

package 这使得只有同一个包中的东西才能访问该符号.

protected使得只有那个类和从该类派生的类中的东西才能访问该符号(与其他类不同,protected在类之外没有任何意义).

public 使它可以访问符号.

privatepackage功能是从来没有虚拟的,而protectedpublic功能都虚拟除非编译器能够确定,他们并不需要(这在这一点上,几乎可以只发生在功能final,不重写功能一个基类).

因此,只要您的两个类位于同一个模块中,并且它们的成员是私有的,它们就可以访问其他成员 - 就​​像模块中的任何其他成员一样 - 但模块外部的任何内容都无法访问它们.除了符号是函数的本地符号之外,没有办法限制模块内的访问,所以如果你想使它不能访问另一个类的成员,那么你需要将它们放入单独的模块.