假设我在 com.test
包的 Test.java 中声明了一个类 Test:
class Test {
public void test() {
}
}
我想知道,方法 test()
的公共(public)访问修饰符在这里不是多余的吗?因为 intellij 没有给我提示说它是。
我认为只有当类 Test
包含 public static void main(String[] args) {}
时才不是多余的我是对还是错?
最佳答案
这不是多余的。如果您有一些派生类,那么修饰符会产生巨大的差异。考虑类:
package ex.one
class Test {
public void testPublic() {
}
void testPackage() {
}
}
和派生 Test.class 的另一个类
package ex.one
public class TestDerivate extends Test {
private void doSomething(){
//legal
testPublic();
testPackage();
}
}
现在,当我们有另一个派生 TestDerivate.class 的类时,您可以在方法上看到不同的行为。在这种情况下,此类具有 public 修饰符。
package ex.two
public class TestDerivateInOtherPackage extends TestDerivate {
public void test(){
// legal
testPublic();
//illegal since it is only package visible
testPackage();
}
@Override
public void testPublic() {
// still legal
}
@Override
void testPackage() {
// still illegal
}
}
关于java - 包私有(private)类中的 public 修饰符是多余的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51236130/