对于类
对于类,只有public和package-private两种访问级别。
1.对于顶层的类来说,只有包级私有和公有两种可能,区别是包级私有意味着只能在当前包中使用,不会成为导出api的一部分,而公有意味着导出api,你有责任去永远支持它。所以,为了使访问最小化,能包级私有就应该声明为包级私有。
2.对于包级私有类来说,如果只在某一个类中被使用,那么就直接让这个包级私有类成为这个类的嵌套类,这样就能让访问级别再次缩小。
对于成员
成员包括域,方法,嵌套类和嵌套接口
访问级别有私有的,包级私有的,受保护的和公有的四种。
1.实例域绝对不能是公有的,声明实例域是公有的,相当于限制了对储存在这个域中的值进行限制的能力,破坏了封装性。
而静态域 也只有在提供常量的抽象类中,通过公有的静态final域来暴露。
2. 设计类时,应当把所有的其他成员都变成私有的。
只有当同一个包中另一个类真正需要访问一个成员的时候,才应该删除private修饰符,把该成员变成包级私有的。
其实这两者都是类的实现的一部分,不会影响到他的api。
3.如果对于公有类的成员,访问级别从包级私有变成保护级别时,要额外小心,因为保护的成员是导出api的一部分,必须得到永久支持。
4.方法覆盖了超类中的一个方法,子类中的访问级别就不允许低于父类的访问级别。这个规则限制了方法的可访问性的能力,保证可以使用超类的地方都可以使用到子类。
这就是为什么实现接口的方法都是public的原因,因为接口的方法默认是public abstact的。