关于Java中private、default、protected、public的使用

关于Java中private、default、protected、public的使用

对于刚刚接触类及其涉及多态、继承等概念的初学者来说,理解这几个权限十分重要,也可能会存在一些模糊不清的情况,也不会去仔细深究。所以,当老师布置作业下来时,还就真的遇到问题了~于是通过整理,有了更清晰的认识!
首先,这几个权限在开发内部项目时,不用太注意,但在公共代码的书写或者是sdk一类的开发,访问修饰符就显得比较重要了。下面对public,protected,default,private的大致理解:

1.如果涉及到包之间的业务逻辑的调用,考虑public修饰类,属性。

2.如果涉及到同包下类之间的调用或者需要提供继承复写扩展的业务方法,考虑使用protected修饰。

3.如果只想在同包下使用且不想继承复写,我们考虑默认default(不写修饰符)即可。

4.如果只想类内部调用,那就可以使用private。

下面这张表,简单阐明了各种权限范围
在这里插入图片描述
权限修饰符作用:可以用于成员变量和方法,以下主要以简单的方法的修饰举例(水平有限)
Test:
在这里插入图片描述
同包 访问时
在这里插入图片描述
不同包
在这里插入图片描述
关于public和private就不多说了。下面看看protected:
在这里插入图片描述
包外

(1)一个类的protected方法或成员变量,在包外是不能通过该类对象进行访问的,即便在该类的子类中也不可这么做;
在该类包外的子类中能访问的只是子类自己继承来的protected 方法和属性,即可以用super来访问;
(2)在包外的子类中,不能用另外一个子类的对象访问父类中的protected变量,尽管这两个子类继承自同一个父类;
包内

(5)而对于protected的静态变量,在子类中可以直接访问,在不同包的非子类中则不可访问;
(6)对于protected的用法,其实是遵循了OOP的一个原则,方法和成员变量被继承后,其可见的范围只能扩大,不能缩小;

最后:来一个面试题
在这里插入图片描述
以上主要来自以下参考(若有疑惑,请看原文):面试题深究protected

猜你喜欢

转载自blog.csdn.net/qq_44654974/article/details/105055819
今日推荐