专栏首页csdn_blogJava的访问控制符详解(结合代码演示)

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

概述

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成员。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java的内部类详解(结合代码全面分析)

    ​ 内部类是一种特殊的类,指的是定义在一个类的内部的类。实际开发中,为了方便的使用外部类的相关属性和方法,这时候我们通常会定义一个内部类。

    bboy枫亭
  • Python贪吃蛇小游戏_完整源码免费分享

    (声明:本文使用的源码非原创,17年在CSDN上用币下载的资源,具体是哪位大佬的忘记了) 在此之前首先说一下环境 Python3.X (使用2.x的大佬自己...

    bboy枫亭
  • Linux如何查看端口被占用情况?Windows如何查看端口被占用情况?

    打开 cmd 命令窗口,输入 netstat -aon(可以指定要查询的端口:netstat -aon|findstr 要查的端口号)

    bboy枫亭
  • Java中的private、protected、public和default的区别(详解)

    (1)对于public修饰符,它具有最大的访问权限,可以访问任何一个在CLASSPATH下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口...

    sr
  • Java中 private、protected、public 和 default 的区别

    具有最大的访问权限,可以访问任何一个在classpath下的类、接口、异常等。它往往用于对外的情况,也就是对象或类对外的一种接口的形式。

    萬物並作吾以觀復
  • 跑步族们,想让“博尔特”陪你赛跑吗?现在它可以帮你…

    对于孤单的运动员来说,有个陪练教练在身边不停地鼓励就像习武的人有个师傅在旁边指导一样,无形中会增加心中的许多力量。运动品牌Puma最近就发布了这样一款名为“Be...

    机器人网
  • 重叠网络——什么让我们等了这么长时间?

    虚拟化大获成功,是因为它实现了最初承诺的优势,包括优化硬件利用率,减少服务器泛滥和最大限度增加服务器硬件投资回报。这是通过以下途径实现的:对服务器的计算资源(C...

    静一
  • 微软发布报告预测2025

    大数据文摘
  • 小程序暗黑技巧|彻底解决长列表页setData超过1M时报错和严重卡顿的问题

    当我们开发列表页分页功能的时候,需要在page中setData去更新列表页,如果我们按照通常的方式去追加数据到列表数据,然后一次性setData到列表数据时,性...

    猿哥
  • 寻找最优持仓期的开盘缺口盈利交易策略基于Matlab

    翻译整理 Watermelon 前言 很多投资者经常讨论股价的预测,基本面的消息等等。当我们在说这些的时候,其实,这些(我把它们归结为算法)算法的核心就是触发识...

    量化投资与机器学习微信公众号

扫码关注云+社区

领取腾讯云代金券