前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java的访问控制符详解(结合代码演示)

Java的访问控制符详解(结合代码演示)

作者头像
bboy枫亭
发布2020-09-22 10:56:13
5670
发布2020-09-22 10:56:13
举报
文章被收录于专栏:csdn_blog

概述

Java是使用“访问控制符”来控制哪些细节需要封装,哪些细节是需要暴露的。Java中四种“访问控制符”说明了面向对象的封装性,所以我们要利用它们尽可能的让访问权限降到最低,从而提高安全性。

修饰符

同类

同包

子类

所有类

private

*

default

*

*

protected

*

*

*

public

*

*

*

*

下面归纳一下Java用于控制可见性的4个访问修饰符:同包同类中,可以自由访问protected成员

1.private 表示私有,只有自己类能访问

2.default 表示没有修饰符修饰,只有同一个包的类能访问

3.protected 表示可以被同一个包的类以及其他包中的子类访问

4.public 表示可以被该项目的所有包中的所有类访问

结合代码详解

下面通过代码测试对Java中4种访问权限修饰符的区别做进一步的说明

首先我们创建4个类:a1,a2,b1,b2,分别比较其在本类、本包、子类、其他包的区别

代码结构:

在这里插入图片描述
在这里插入图片描述

public

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上可以说明 public 修饰符的访问权限为:该项目的所有包中的所有类。

protected

在这里插入图片描述
在这里插入图片描述

只有 b1 编译不通过,说明 protected 修饰符的访问权限为:同一包中的类和不同包下的子类。

不过注意,到这儿还没完!!!

关于 protected 有两个细节需要特别强调一下:

1.若父类和子类在同一个包中,子类可访问父类的protected成员,也可访问父类对象的peotected成员。

2.若子类和父类不再同一个包中,子类可访问父类的protected成员,不能访问父类对象的protected成员。

对于初学者可能不太好理解,下面看代码就明白了

在这里插入图片描述
在这里插入图片描述

default

所谓默认,也就是什么都不加

在这里插入图片描述
在这里插入图片描述

由此可以说明,default 修饰符的访问权限为: 同一个包中的类

private

在这里插入图片描述
在这里插入图片描述

这个就不必多说了吧,private修饰符的访问权限为:同一个类

小结

  • 同包不同类中,无任何继承关系,可以自由访问protected成员
  • 同包不同类中,具有继承关系,任何子类或者子类的子类都可以访问protected成员
  • 不同包不同类中,不具有继承关系,不可以访问其它类protected成员
  • 不同包不同类中,具有继承关系,子类可以访问父类protected成员。但是父类对象不可以访问自己的protected成员,否则报这样的错误:The method speak(Object) from the type Person is not visible
  • 不同包不同类中,具有继承关系,间接子类中除该类对象自己外,它的直接父类,以及间接父类都不可以访问自己的protected成员。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/08/04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 概述
  • 结合代码详解
    • public
      • protected
        • default
          • private
          • 小结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档