0

当我们在默认类中有公共方法时,为什么 JAVA 编译器不会出错?

当我们有非公共类(假设具有默认访问级别)并且我们在该类中有公共方法时,如下所示,

class Main {

    public void doStuff() {

    }
}

那么我们不能从同一个包的外部访问上面的 doStuff() 方法。但是对于上述方法减速具有公共访问修饰符是合法的。那么它的目的是什么?

4

3 回答 3

2

允许访问具有包可见性的类成员没有害处public:以这种方式定义它没有矛盾,因此编译器允许它。

但是,您肯定是正确的,使包可见类的成员public不会扩展其可见性:如果拥有类具有包可见性,则使其所有公共成员也可见包不会改变任何事情。

于 2013-10-15T01:48:37.833 回答
2

因为它不是错误,并且可能有必要避免错误:例如,如果它是接口方法的实现。

于 2013-10-15T02:00:12.630 回答
1

同一个包中的某个人可以实例化一个 Main,并将其作为 Object 或 Interface 传递给另一个类。在前一种情况下,像 toString() 和 equals() 这样的方法必须是公共的,而在后一种情况下,该接口的方法必须是公共的。

于 2013-10-15T02:02:51.993 回答