访问修饰符面试问题

访问修饰符面试问题

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

Java有四种访问修饰符:public(全局可见)、private(类内可见)、protected(同包及子类可见)和默认(同包可见)。private方法不可被其他类访问,protected方法可被子类访问。访问修饰符影响方法重写,不能收紧访问权限。Java 9后,接口支持private方法。

🎯

关键要点

  • Java有四种访问修饰符:public、private、protected和默认。
  • public:全局可见;private:仅在同一类内可见;protected:同包及子类可见;默认:同包可见。
  • 默认访问修饰符为默认(包私有),仅在同一包内可访问。
  • private方法不能被其他类访问,protected方法可被子类访问。
  • 使用private进行封装,使用public用于需要全局可访问的方法或类。
  • protected允许子类访问成员,同时限制不相关类的访问。
  • 默认访问与protected的区别在于,默认仅在同一包内可访问,而protected也允许子类访问。
  • 子类不能访问父类的private成员,但可以访问protected和public成员。
  • 访问修饰符不能应用于局部变量,局部变量始终是局部作用域。
  • 重写方法时,访问修饰符不能比被重写的方法更严格。
  • 尝试用更严格的访问修饰符重写方法会导致编译错误。
  • Java 9及以上版本允许接口中有private方法。
  • 嵌套类可以使用任何访问修饰符。
  • 如果希望方法仅在其包内及子类可访问,应使用protected修饰符。
  • 声明类为包私有可以限制其使用仅限于同一包。
  • 使用public方法对外暴露功能,使用private方法隐藏实现细节。
  • public类可以有private或protected成员。
  • 子类方法不能比父类方法更严格,违反里氏替换原则。
  • 常见错误包括误解protected的含义和在局部变量上使用访问修饰符。

延伸问答

Java中有哪些访问修饰符?

Java中有四种访问修饰符:public、private、protected和默认(包私有)。

protected修饰符与默认访问修饰符有什么区别?

protected允许同包内及子类访问,而默认仅允许同包内访问。

为什么要使用private修饰符?

使用private可以实现封装,隐藏内部实现细节。

子类能否访问父类的private成员?

不可以,子类不能访问父类的private成员,但可以访问protected和public成员。

重写方法时,访问修饰符有什么限制?

重写方法的访问修饰符不能比被重写的方法更严格,否则会导致编译错误。

Java 9之后,接口可以有private方法吗?

可以,Java 9及以上版本允许接口中有private方法。

➡️

继续阅读