如果我有一个java包,它是package-private(用“class”声明,而不是“public class”),如果里面的方法声明为public或protected或者package-private,那么真的没有区别吗?那么我应该使用哪一个,或者什么时候应该使用哪个?我有点困惑。Java - 包私有类中的方法可访问性?
10
A
回答
18
如果我有一个Java类是包私有的(以“类”,而不是“大众级”声明),确实没有区别,如果方法内声明公共或保护或包私有,对?
好吧,也许不会立即。但是,如果您(或将来)宣布从包私有类继承的“受保护”或“公共”类,那么原始类的成员的可见性会做的事。
正如@kmccoy指出的那样,将该类声明为final可以删除子类的可能性。
但这真的只是装饰窗户。如果您决定确实需要创建子类,则只需删除final
...然后回到访问修饰符的选择非常重要的情况。
IMO,底线是你应该选择最合适的修饰符...即使现在没有必要。如果没有别的,你选择的修饰符应该记录你的意图,即抽象边界在哪里。
4
包类中的公共方法对同一包中的类是公共的。但是,私有方法不能被同一个包中的类访问。
相关问题
- 1. 私有方法可访问
- 2. .java文件中的包私有类 - 为什么可以访问?
- 3. 访问私有类中的私有方法
- 4. Java EE 6中的@Remote是否可以访问私有方法?
- 5. 访问类中的私有属性
- 6. Java新手问题:包私有访问
- 7. Groovy如何访问Java类的私有方法?
- 8. 访问JS私有方法
- 9. 类中的私有变量可以从Java中的main访问?
- 10. @Transactional方法禁用警告“访问可以是包私有”
- 11. 无法使用Reflection API访问java中的私有方法
- 12. 包私有类中的公共方法
- 13. 无法访问静态方法中的私有类成员?
- 14. 在C中访问私有方法#
- 15. 通过javascript中的私有方法访问私有变量
- 16. Java的私有方法包装
- 17. Java访问修饰符 - 可用于子类和包的方法
- 18. 对包 - 私有作品的Java默认类访问如公开
- 19. 访问私有内部类中重写的方法与私有构造
- 20. 调用Parent方法并访问父类中的私有变量?
- 21. 子类访问父类的私有方法?
- 22. 访问overriden超类方法中的子类属性。可能?
- 23. Java:ArrayList中两种方法的可访问性问题(三类)
- 24. 访问类方法中的属性?
- 25. 访问私有变量的Java静态方法
- 26. 无法正常访问私有类型
- 27. 为什么我可以在静态类方法中访问私有的非静态类属性?
- 28. 父类包可以从java的子包类中访问吗?
- 29. 访问私有方法字段
- 30. AccountManagerService:如何访问其私有方法
如果该类是“final class SomeClass”,那么成员可见性是否有关系? – kmccoy 2011-03-10 13:12:12
如果在将来的某个重构中删除最终修饰符:)请记住,这是软件,“final”并不意味着“set in stone never to change”,它表示“不能从该类型派生子类,因为它被写入马上。” – 2011-03-10 22:23:55