Java 当我们在默认类中有公共方法时,为什么编译器不给出错误
当我们在默认类中有公共方法时,为什么JAVA编译器不给出错误 当我们有非公共类(比如说默认访问级别)时,如果我们在该类中有公共方法,如下所示Java 当我们在默认类中有公共方法时,为什么编译器不给出错误,java,oop,access-modifiers,Java,Oop,Access Modifiers,当我们在默认类中有公共方法时,为什么JAVA编译器不给出错误 当我们有非公共类(比如说默认访问级别)时,如果我们在该类中有公共方法,如下所示 class Main { public void doStuff() { } } 那么我们就不能从同一个包的外部访问上面的doStuff()方法。但对上述方法使用公共访问修改器是合法的。那么它的目的是什么呢?允许public访问具有包可见性的类的成员是无害的:以这种方式定义它并不矛盾,因此编译器允许它 但是,让包的成员可见类publi
class Main {
public void doStuff() {
}
}
那么我们就不能从同一个包的外部访问上面的doStuff()方法。但对上述方法使用公共访问修改器是合法的。那么它的目的是什么呢?允许
public
访问具有包可见性的类的成员是无害的:以这种方式定义它并不矛盾,因此编译器允许它
但是,让包的成员可见类
public
并不会扩展其可见性,这一点您当然是对的:如果所属类具有包可见性,使其所有的公共成员包可见并不会改变任何事情。允许public
访问具有包可见性的类的成员没有害处:以这种方式定义它并不矛盾,因此编译器允许它
但是,让包的成员可见类
public
并不会扩展其可见性,这一点您当然是对的:如果所属类具有包可见性,那么让其所有的公共成员包可见并不会改变任何事情。因为这不是一个错误,因为可能需要避免一个错误:例如,如果它是一个接口方法的实现。因为它不是一个错误,因为可能需要避免一个错误:例如,如果它是一个接口方法的实现。同一个包中的某个人可以实例化一个Main,并将其作为对象或接口传递给另一个类。在前一种情况下,像toString()和equals()这样的方法必须是公共的,在后一种情况下,该接口的方法必须是公共的。同一个包中的某个人可以实例化Main,并将其作为对象或接口传递给另一个类。在前一种情况下,像toString()和equals()这样的方法必须是公共的,而在后一种情况下,该接口的方法必须是公共的。方法可以通过反射调用,而且-afair javac在这种情况下会发出通知,因为在Java的旧时代,您可以从默认包导入;这是向后兼容性的一大优点,它毫无理由地阻碍了未来几代人的发展。方法可以通过反射调用,而且-afair javac在这种情况下会发出通知,因为在旧Java时代,您可以从默认包中导入;这就是向后兼容性的伟大之处,它无缘无故地阻碍了几代人的未来。