我才知道
A class may be declared with the modifier public, in which case that class is visible to all classes everywhere. If a class has no modifier (the default, also known as package-private), it is visible only within its own package.
这是一个明确的声明。但是这些信息干扰了我对包导入的理解(这很容易出错)。我认为导入包可以使导入包中的类对导入类可见。
那么,它是如何工作的呢?在包含公共(public)类的包被导入的条件下,公共(public)类是否对所有类都可见?或者没有这样的条件?包私有(private)类呢?无论是否导入包含包,它们都是不可见的?
添加: 在我看来,我得到了 2 个答案,它们被标记为好(投票赞成)并且相互矛盾。
最佳答案
导入类不会以任何方式改变其可见性。将一个类导入另一个类或多或少只是一种使源代码可读的方法,因此您不必一直输入完全限定的类。比如这个类
import java.util.*;
class ImportTests {
private Collection collection;
}
编译成与此类相同的代码
class ImportTests {
private java.util.Collection collection;
}
第一个类中的 import
语句不会改变 Collection
或 java.util
中的任何其他类的可见性 package it只是让 ImportTests
类可以引用 Collection
而无需完全限定名称。
关于java - 导入包会改变类的可见性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2398050/