Effective Java之使类和成员的可访问性最小化(十三)

对于类

对于类,只有public和package-private两种访问级别。

1.对于顶层的类来说,只有包级私有和公有两种可能,区别是包级私有意味着只能在当前包中使用,不会成为导出api的一部分,而公有意味着导出api,你有责任去永远支持它。所以,为了使访问最小化,能包级私有就应该声明为包级私有。

2.对于包级私有类来说,如果只在某一个类中被使用,那么就直接让这个包级私有类成为这个类的嵌套类,这样就能让访问级别再次缩小。

对于成员

成员包括域,方法,嵌套类和嵌套接口

访问级别有私有的,包级私有的,受保护的和公有的四种。

1.实例域绝对不能是公有的,声明实例域是公有的,相当于限制了对储存在这个域中的值进行限制的能力,破坏了封装性。
而静态域 也只有在提供常量的抽象类中,通过公有的静态final域来暴露。
 
2. 设计类时,应当把所有的其他成员都变成私有的。
只有当同一个包中另一个类真正需要访问一个成员的时候,才应该删除private修饰符,把该成员变成包级私有的。
其实这两者都是类的实现的一部分,不会影响到他的api。

3.如果对于公有类的成员,访问级别从包级私有变成保护级别时,要额外小心,因为保护的成员是导出api的一部分,必须得到永久支持。

4.方法覆盖了超类中的一个方法,子类中的访问级别就不允许低于父类的访问级别。这个规则限制了方法的可访问性的能力,保证可以使用超类的地方都可以使用到子类。
这就是为什么实现接口的方法都是public的原因,因为接口的方法默认是public abstact的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值