我想知道如果方法是公共的或在受包保护的类中受包保护,是否有任何区别。
class Example {
public void test() {}
}
代替
class Example {
void test() {}
}
我想最大的能见度是由班级给出的。而一种方法只能降低可见度,增加可见度没有效果。
但它是有效的语法,所以也许我监督了一些事情?
我想知道如果方法是公共的或在受包保护的类中受包保护,是否有任何区别。
class Example {
public void test() {}
}
代替
class Example {
void test() {}
}
我想最大的能见度是由班级给出的。而一种方法只能降低可见度,增加可见度没有效果。
但它是有效的语法,所以也许我监督了一些事情?
如果我们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();
}
}
如果Example
实现了某种接口,您必须将它们公开,因为在这种情况下您无法减少访问。默认情况下,所有接口方法都是公共的。
正如所写,它什么也不做。如果它是子类或接口实现,那么它可能正在实现或覆盖在其他地方声明为公共的方法。