「Java中四大访问修饰符」 的相关问题在面试的时候很少被问到,但还是需要足够理解。相信大家对public、private和默认的修饰符都比较了解,用的也比较多,但你真的了解protected修饰符吗?
建议重点关注Java中 「protected权限修饰符」 的相关问题。
Java中四大访问修饰符
Java中的访问控制主要分四种级别,如下表:
修饰符 | 当前类 | 同包 | 子类 | 其他包 |
---|---|---|---|---|
public | √ | √ | √ | √ |
protected | √ | √ | √ | × |
default | √ | √ | × | × |
private | √ | × | × | × |
注意:Java中外部类的修饰只能是public或默认,类的成员(包括内部类)的修饰可以是以上四种。
在项目中的哪些地方用到过protected?
相信这个问题,会把部分人搞蒙掉。说实话,我在项目中也没怎么用到过,在此仅做抛砖引玉用,大家有更好的回答欢迎留言哈。
参考答案:
受保护(protected)对子类相当于公开,对不是同一包中的没有父子关系的类相当于私有。我在项目中确实没怎么使用过,但我知道有一种场景比较适合使用protected修饰符。
Object类中对clone方法的声明即用到了protected访问修饰符,这是因为Object类的clone方法只能实现浅克隆,而并不能实现常使用的深克隆,这就要求子类在需要克隆对象时尽量重写clone方法,此时即声明为protected的,以保证在需要克隆对象时,必须要求待克隆对象所在的类实现Cloneable接口并重写clone方法。
该场景比较抽象,建议好好阅读下深拷贝与浅拷贝。
推荐阅读
欢迎关注
Java名企面试吧,每天10点24分,我们不见不散!
丙子先生的宗旨是,每天以短篇幅讲高频面试题,不增加太多负担,但需要持之以恒。
能力有限,欢迎指教!