Java 访问权限控制

2023-11-09

使用访问权限控制的原因:

  • 使用户不要触碰到那些不该触碰的部分
  • 类库设计者可以更改类的内部工作模式,而不必担心整体程序造成影响

访问权限修饰词

Java具有三种访问权限修饰词(public private protected),划分出了四种访问权限(public protected default private)。

在修饰成员变量/成员方法时,四种访问权限的含义如下:

private:该成员可以被该类内部成员访问;

default:该成员可以被该类内部成员访问,也可以被同一包下其他的类访问;

protected:该成员可以被该类内部成员访问,也可以被同一包下其他的类访问,还可以被它的子类访问;

public:该成员可以被任意包下,任意类的成员进行访问。

在这里插入图片描述

访问权限控制的五种使用场景

  • 外部类的访问权限
    在修饰类时,只有defaultpublic两种访问权限
  • 类成员的访问权限
    类成员分为三类:成员变量、成员方法、成员内部类(内部接口)
    类成员可以使用所有的访问控制权限
    (这里的类成员是指全局成员,局部成员没有访问权限控制,若加修饰符会报错)
public class AccessRights {
	//可以被所有的类访问
    public String publicStr = "public";
    //可以被本包的类及所有子类使用
    protected String protectedStr = "protected";
    //只允许同包访问
    String defaultStr = "default";
    //只允许同类访问
    private String privateStr = "private";
    public void publicMethod() {
        System.out.println("publicMethod");
    }
    protected void protectedMethod() {
        System.out.println("protectedMethod");
    }
    //default 访问权限,在本包范围内使用
    void method() {
        System.out.println("defaultMethod");
    }
    //private权限的方法,只能在本类使用
    private void privateMethod() {
        System.out.println("privateMethod");
    }
    //private权限的内部类,即这是私有的内部类,只能在本类使用
    private class privateMethod {
    }
    
    public void count(){
	    //局部成员变量
	    public int amount;//编译无法通过,不能用public修饰
	    int money;//编译通过
	    //局部嵌套接口
	    class customer{//编译通过
    	}
    }
}
  • 抽象方法的访问权限
    抽象方法不能被private修饰
  • 接口成员的访问权限
    由于接口的特殊性,所有成员的访问权限都已被规定。不需要完整写出所有的修饰符,编译器会自动加上。
    变量: public static final
    抽象方法: public abstract
    静态方法: public static
    内部类、接口: public static
  • 构造器的访问权限
    构造方法可以使用所有的访问控制权限
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 访问权限控制 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 在画布上绘图

    我正在编写一个 Android 应用程序 它可以在视图的 onDraw 事件上直接绘制到画布上 我正在绘制一些涉及单独绘制每个像素的东西 为此我使用类似的东西 for int x 0 x lt xMax x for int y 0 y lt
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • Spring @RequestMapping 带有可选参数

    我的控制器在请求映射中存在可选参数的问题 请查看下面的控制器 GetMapping produces MediaType APPLICATION JSON VALUE public ResponseEntity
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • Java按日期升序对列表对象进行排序[重复]

    这个问题在这里已经有答案了 我想按一个参数对对象列表进行排序 其日期格式为 YYYY MM DD HH mm 按升序排列 我找不到正确的解决方案 在 python 中使用 lambda 很容易对其进行排序 但在 Java 中我遇到了问题 f
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 为什么HashMap不能保证map的顺序随着时间的推移保持不变

    我在这里阅读有关 Hashmap 和 Hashtable 之间的区别 http javarevisited blogspot sg 2010 10 difference Between hashmap and html http javar
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r

随机推荐

  • 自动贩卖机的c语言,自动售货机体统c++编程 问题描述】 自动售货机可以售出A、B、C三种商品,价格分别为1元、2元、知道...

    满意答案 include stdio h include conio h structstDrink floatfPrice 价格intiLeft 剩余数 voidPay stDrink pstPay floatfPay 0 0f if p
  • libuv 多线程与队列

    libuv 多线程与队列 一 libuv编译环境 1 可查看另一篇 libuv 介绍与编译 http mp blog csdn net postedit 79193274 二 原理图 程序代码 main c include
  • canvas做一个简单气泡图

    数据结构 name 土豆 num 200 name 西瓜 num 80 name 黄瓜 num 85 name 粉丝 num 70 name 苹果 num 75 name 香蕉 num 30 name 樱桃 num 5 name 橙子 nu
  • 使用kotlin编写一个无障碍服服务

    Kotlin 是一种非常强大的编程语言 可以轻松实现无障碍服务 它拥有丰富的 API 和库 可以帮助开发人员更轻松地构建可用性强的应用程序 它还具有简单的语法 使开发人员可以快速开发出可靠的无障碍服务
  • JVM常见面试题

    一 了解JVM的发展史 1 Sun Classic VM 早在1996年Java1 0版本的时候 Sun公司发不了一款名为Sun Classic vm的java虚拟机 它同时也是世 界上第一款商业java虚拟机 jdk1 4 时完全被淘汰
  • Qt 实现点击按钮窗体某个部分出来,再点击回去,循环反复

    ui gt widget 3 gt setVisible false ui gt widget 4 gt setVisible false this gt resize 473 229 connect ui gt pushButton 2
  • java合并数组的方法

    在 Java中 数组是一种重要的数据结构 在 Java中数组的操作方式有两种 一种是直接使用数组来操作 另一种是通过引用计数或者双指针对数组进行操作 对于直接使用数组来操作的方式 我们可以通过两个方法来实现 一种是将数组作为参数传递给方法
  • 贪心算法之田忌赛马(超详细)

    简述 手把手教会贪心算法之田忌赛马 超详细 题目 田忌赛马 田忌和齐王赛马 两人各出n匹马 赢一场比赛得200两银子 输了赔200银子 平局不赔不赚 已知两人每匹马的速度 问田忌最多能赢多少银子 多组测试数据 每组数据的第一行是一个整数n
  • 第一次使用leaflet

    1 下载leaflet https leafletjs com download html 2 下载插件leaflet draw http leaflet github io Leaflet draw docs leaflet draw l
  • WFQ-加权公平排队

    WFQ是一个复杂的排队过程 可以保证相同优先级业务间公平 不同优先级业务间加权 队列的数目可预先配置 范围是 16 4096 WFQ 在保证公平 带宽 延迟 的基础上体现权值 权值大小依赖于JP报文头中携带的IP优先级 Precedence
  • java的面向对象的基础

    面向对象基础 一 类和对象 1 1 什么是对象 1 2 面向对象 1 3 类 1 3 1 什么是类 1 3 2 类的特点 1 3 3 类的组成 1 3 4 类的定义 1 4 对象的属性 1 5 对象的行为 1 6 类和对象的关系 1 7 对
  • 编程陷阱_变量被莫名修改

    编程陷阱 变量被莫名修改 源代码 错误点 通道号更新 导致情况 原工程作用 QT中查询10个通道的数据 定义个数组记录每个通道的时间戳 轮询每个通道 源代码 错误点 CHANNEM NUM MAX 定义为 10 通道号更新 目标是轮询通道号
  • 系统架构设计专业技能 · 软件工程之系统分析与设计

    系列文章目录 系统架构设计专业技能 软件工程 一 系统架构设计师 系统架构设计高级技能 软件架构概念 架构风格 ABSD 架构复用 DSSA 一 系统架构设计师 系统架构设计高级技能 系统质量属性与架构评估 二 系统架构设计师 系统架构设计
  • 若依项目整合百度(Ueditor)富文本编辑器

    若依项目整合百度 Ueditor 富文本编辑器 最近项中有用到富文本编辑器 若依自带的功能太过简单 闲来无事整合了百度的富文本编辑器 一路踩坑终是成功了 呜呼 UEditor文档 http fex baidu com ueditor 点击演
  • Golang两款编辑器:Goland 2020 和国产的LiteIDE

    Goland 2020 http www opdown com soft 220835 html 国产的LiteIDE http liteide org cn
  • MERN技术栈实现CRUD的小项目(万字长文;使用React、Express、Mongodb、node实现前后端结合的增删查改)

    预期效果 使用React Express Mongodb node 可以前后端交互 实现增删查改 成品 实施过程 1 创建项目 前端部分的创建 前端依然使用 react create app 来创建 这次用到的依赖有如下的 classnam
  • VBA基础 - 分支和循环

    概要 编程语言的基础除了数据类型 就是控制结构了 所谓控制结构 主要就是分支和循环 分支 废话不说 直接示例代码 单条件判断 1 Sub Test 2 If 2 gt 1 Then 3 Debug Print xxxx 4 End If 5
  • 未完成---VBA的键盘事件相关

    试了几个地方 有的有些 有的问题很多 1 workbook open时调用 不好用 Private Sub Workbook Open Load UserForm6 UserForm6 Show Application OnKey a wb
  • WordPress(4)关于网站的背景图片更换

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 更改的位置 1 红色区域是要更换的随机的图片 二 替换图片位置 三 开启随机数量 四 结束 前言 提示 这里可以添加本文要记录的大概内容 例如 随着人工智
  • Java 访问权限控制

    使用访问权限控制的原因 使用户不要触碰到那些不该触碰的部分 类库设计者可以更改类的内部工作模式 而不必担心整体程序造成影响 访问权限修饰词 Java具有三种访问权限修饰词 public private protected 划分出了四种访问权