我怎样才能创建一个应该只对 java 中的子 类 可用的成员?

How can I create a member that should be available only to my sub classes in java?

我怎样才能创建一个应该只对 java 中的子 类 可用的成员?

static class XX {
    private static int p = 10; //p is only accessible to TT

    static class TT {
        static public int getT() {
            return p;
        }
    }

}

假设您的 child 类 是子类,他们可以访问任何 public 变量。如果您希望从子类访问 private 变量,则必须将它们更改为 protected.

假设当您说 "variable" 时,您指的是某些 class 的 成员。例如,

class Parent {
    SomeType myVariable;
    ...
}

假设当你说我的 child classes 时,你说的是 Java 中的 extends 关系。例如,

class Child extends Parent {
    ...
}

在那种情况下,您无法完全得到您想要的,但也许您可以得到您需要的。

如果您将成员声明为 protected,那么它将在任何 child class 中可见,但它也会在任何其他 class 中可见属于同一个包,不管另一个 class 是否是 child。

class Parent {
    protected SomeType myVariable;
    ...
}

IMO,protected 没什么用。它作为 建议 其他程序员不应尝试在未继承自 parent 的 class 中使用它,但那又怎样?

如果您在某些 class 中看到 private 成员,那么您可以放心,您看到的源文件之外的任何代码都可能依赖于它。

如果您看到具有 默认 访问权限的成员(即,既没有 public,也没有 private,也没有 protected),那么您知道任何依赖于它的代码都必须在同一个包中声明。没有什么能阻止世界上某个地方的其他程序员在你的包中声明他自己的代码,但如果 he/she 这样做,那么她或他就是愚蠢的,当你发布一个破坏 his/her 应用程序的新版本时,那不是你的问题。

如果您看到具有 publicprotected 访问权限的成员,那么您必须假设您不认识的人以及您永远不会遇到的人都依赖于您 不改。