该内容已被发布者删除 该内容被自由微信恢复
文章于 2021年9月5日 被检测为删除。
查看原文
被用户删除
其他

卧槽!面试官竟然还问我 Java 权限修饰符,一时不知道怎么回答。。。

鸭哥 鸭哥聊Java 2021-09-05

大家好,我是鸭哥。


昨天鸭哥在微信群里,看到一个面试者诉苦,说自己面试时被提问权限修饰符的相关知识,要求说出 public、protected、default(无修饰符,即package private) 和 private 的区别,结果他只能根据单词的字面意思说个大概,面试官的态度迅速就冷淡了。面试前,没能把握好这类基础知识,他追悔莫及。


鸭哥想说,权限修饰符虽然是基础知识,但是怎么合理恰当地运用却是编程功底的体现,应该多思考对比不同修饰符的运用场景。我们这里的大部分读者应该是熟悉这类知识的,但是面试机会只有一次,鸭哥还是要和大家一起全面复习下~


权限修饰符的修饰对象和权限控制


  • 修饰类:使用public、default(package private,无修饰符)

  • 修饰变量和方法:使用public, private, protected 或 default ( package private,无修饰符)

如果一个类用 public 修饰,那么它对任何位置的所有类可见;如果一个类无修饰符,即 default ,那么它只对同一个包中的其他类可见,因此也被称为 package private.


对于类中的变量和方法,当使用 public 和 无修饰符时,访问权限与修饰类时相似。除此之外,类中的变量和方法,还可以用 private 和 protected 修饰。当使用 private 时,该变量或方法只能在本类中访问;当使用 protected 时,该变量或方法能在同一个包中被访问,或者被不同包的该类的子类访问。


不够直观?鸭哥特意整理了表格!


访问权限控制


修饰符当前类同一个包子类(不同包)其他包
public
protected×
no modifier××
private×××


实例演示



如上图所示,有包 1 和包 2 ,testClassSub 是 testClass 的子类,Alpha是包1的另一个类,Beta是包2的另一个类。下表展示的是,当使用不同的修饰符修饰 testClass 的成员变量或方法时,不同包中的不同类的访问权限。


修饰符testClassAlphatestClassSubBeta
public
protected×
no modifier××
private×××


权限修饰符的设置和运用


如果其他人可能会用到你编写的类,为了少出错,我们可以尽量这样设置访问权限:


  • 使用最严格的限制规则,也就是默认使用 private 修饰符。除非某个方法需要暴露给其他类使用,否则一律限制变量和方法仅本类可见;

  • 尽量避免使用 public 修饰符,它将会限制你更改代码的灵活性


第二点怎么来理解呢?当你使用 public 时,修饰的内容对其他人是可见的,别人可能会使用这些公共的内容,这时候,当你需要更改时,别人也需要随之修改。最主要的是,用的人多了,你根本不知道有谁在用,你还能轻易修改 public 修饰的内容吗,代码的灵活性自然就降低了。



关于权限修饰符的使用,你有哪些心得体会呢?



近期技术热文

1、鸭哥面试了一妹纸,问她如何打印数组?她支支吾吾了半天。。。

2、如何在 Java 中优雅地分割 String 字符串,鸭哥给你说透彻

3、和鸭哥一起看,Java数组声明及初始化的全貌

4、新来的实习生连文件操作都不会,被老师傅骂了,有点委屈~


点个在看你最好看


: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存