java - 包保护类中的公共(public)方法是否有任何理由?

标签 java class-visibility

我想知道在一个受包保护的类中,一个方法是公共(public)的还是包保护的是否有任何区别。

class Example {
  public void test() {}
}

代替

class Example {
  void test() {}
}

我想最大的可见性是由类(class)给出的。而一种方法只能降低能见度,提高能见度没有效果。

但它是有效的语法,所以也许我监督了什么?

最佳答案

如果我们将 Example 子类化为 public 类,那么包外的代码可以使用子类实例访问 test() 方法,如果它是 public

例子:

package A;
class Example {
   public void test() {}
}

package A;
public class SubExample extends Example {
}

package B;
import A.SubExample;
class OutsidePackage {
  public void some method(SubExample e){
    // Had test been defined with default access in class Example
    // the below line would be a compilation error.
    e.test();
  }
}

关于java - 包保护类中的公共(public)方法是否有任何理由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16069320/

相关文章:

java - VK API java sdk account.getProfiles 访问被拒绝?

java - 通过反射调用不同包中的类的公共(public)方法

android - 禁止使用 AsyncTask,使用自定义 AsyncTask

java - 使用 hibernate 进行 Birt 报告

java - 如何更改 Java 中 String.format() 中 %tZ 使用的时区?

java - 使用正则表达式验证输入至少包含 2 个字母,允许特殊字符和普通字符

java - Objectify 不返回新数据

java - Spring BeanFactory 是如何实例化一个非公共(public)类的?

css - 通过 css 媒体查询使导航可见时不显示菜单项

c++ - 在私有(private)嵌套类上使用 using 指令