2017-07-10 58 views
1

如果一个类的可见性包是私有的,是否还有任何要点设置方法具有该可见性,因为您无法首先访问这些方法?包私人访问修饰符

+0

简短的回答是否定的,没有意义。 –

+2

如果将来改变类的可见性,它可能会阻止未来访问这些方法, – Nicolas

+0

是的,有一点。有人可能能够通过反射来获取方法,如果它们是公开的,甚至在禁止'setAccessible'调用的SecurityManager下运行。一般来说,如果有些东西不是为了公共使用,请不要公开。 – VGR

回答

1

例如,包私有类可能会实现一些接口并在包的外部使用。在这种情况下,实施的方法应该是public。您也可以通过private访问修饰符来限制同一包中某些成员的使用。

package pkg1; 

public interface SomeInterface { 
    void m(); 

    public static SomeInterface getImplementation() { 
     return new A(); 
    } 
} 

class A implements SomeInterface { 
    @Override 
    public void m() {} 

    public void m2() {} // this one cannot be called from other packages 

    private void m3() {} // this one might be used only in class A 
} 

package pkg2; 

import pkg1.SomeInterface; 

public class Main { 
    public static void main(String[] args) { 
     SomeInterface implementation = SomeInterface.getImplementation(); 
     implementation.m(); 
    } 
} 
0

简单的回答是,如果一个类将要实施或扩展。不,如果它不会被延伸或实施。如何强烈建议仍然制作不希望其他课程看起来是私密的方法或变量。如果您希望更改类的可见性,并在长期运行时使代码更易读,这将节省以后的时间。