访问控制符的合理使用是为了封装
大家知道,类中的属性最好标记为private,而方法标记为public。任何声明为private的内容对其他类都是不可见的。子类也不能访问超类的私有域。
当希望超类中某些方法允许被子类访问,或允许子类的方法访问超类的某个域。为此,需要将这些方法或者域声明为protected。
例如,将超类Employee中的hireDay声明为protected,而不是私有的,Manager的方法就可以直接访问它。
不过,Manager类中的方法只能访问Manager对象中的hireDay属性,不能访问其他Employee对象中的属性。这种限制有助于避免滥用受保护机制,使得子类只能获得访问受保护属性的权利。实际中,设置受保护域,如果把这个类给其他程序员使用,涉及到一些修改时,需要通知所有程序员,违背了OOP提倡的数据封装原则。
所以,受保护的方法更有实际意义,当限制某个方法的使用时,就可以将它声明为protected。这表明子类(很熟悉祖先类)得到信任,可以正确使用这个方法,其他类被限制。
4个访问修饰符
1)仅对本类可见:private,一般不用来修饰类(内部类除外),系统会直接报错
2)对所有类可见:public
3)对本包和所有子类可见:protected
4)对本包可见:默认
关于外部类
只能使用public 和默认,因为外部类没有处于任何类的内部,也没有子类,所以不能用private 和protected
相应的,外部类使用public ,可以被所有类访问,不使用控制符修饰的外部类之恩那个被同一个包中的其他类使用
什么是JavaBean
一个类为每个实例变量使用private 修饰,并提供public 修饰的setter 和getter方法。