包装和可见性

Jim*_*mmy 5 java encapsulation access-modifiers package class-visibility

我正在制作一个 SDK,并尝试将类分离到不同的包中,这些类使用一些其他共享类。问题是,如果我将共享课程公开,那么每个人都可以看到它们,而不仅仅是我的课程。使它们只能由我的应用程序访问的正确方法是什么?

例子 :


打包 MyClass1

套餐b MyClass2

包 c public MySharedClass


因为 c 是 public MySharedClass 将能够访问它,但问题是它也将对世界可见,我怎样才能阻止这种情况呢?

Ósc*_*pez 4

在Java中,包都是“公共”的,你可以保护的是包中的类。为了将类的可见性限制为仅给定的包,请像这样声明它(不带可见性修饰符public):

class MyClass {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

这样,只有与 MyClass 位于同一包中的类才能看到它。

  • 但通过这样做,我必须将使用该类的所有类移到同一个包中。如果可能的话,这是我试图避免的。 (2认同)