在Java中,有四种可见性的访问修饰符:
- 仅对本类可见(也可以在嵌套时调用)——private
- 对所有类可见——public
- 对本包和所有子类可见——protected
- 对本包可见——默认,不需要修饰符
在实际应用中,要谨慎使用protected属性。假设需要将设计的类提供给其他程序员使用, 而在这个类中设置了一些受保护域,由于其他程序员可以由这个类再派生出新类,并访问其中的受保护域。在这种情况下,如果需要对这个类的实现进行修改,就必须通知所有使用这个类的程序员。这违背了面向对象提倡的数据封装原则。
受保护的方法更具有实际意义。如果需要限制某个方法的使用,就可以将它声明为protected。这表明子类(可能很熟悉祖先类)得到信任,可以正确地使用这个方法,而其他类则不行。