Java 访问权限控制

news2024/9/27 7:25:48

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

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

访问权限修饰词

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
  • 构造器的访问权限
    构造方法可以使用所有的访问控制权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/127148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WeakHashMap引起内存溢出,线程数剧增

1.问题背景 代码通过jarLoader的方式,实现了一个数据库多个客户端版本兼容的情况,一个客户端使用一个jarLoader,实现jar的隔离。 同时,jarLoader使用weekhashmap做缓存。 hive做批量查询表的元数据时,引入了线程池。…

NodeJS学习笔记一

文章目录1. 模块化1.1 模块作用域2. 内置API模块3. 自定义模块3.1 向外共享模块作用域中的成员3.2 使用误区3.3 CommonJS模块化规范4. 第三方API模块4.1 npm包管理目录4.2 包管理配置文件 package.json4.3 devDependencies节点4.4 切换npm的包镜像源4.5 包的分类4.5.1 项目包4.…

【cfeng-Work】work项目理解

work 项目 内容管理入职项目环境搭建商用项目 和 学习项目经验分享easily 分享work 见解 学习项目(非商用)相比工作中的商用项目差别还是很大的… Cfeng 最近开始工作, 接下来我将分享一下对于学校中的project环境和 work环境的相关理解 入职…

生成式对抗网络(GAN)原理推导与网络构建思路

0 引言 设想这样的场景:你是一个工作室的老板,你的工作室主要用来生产名画的赝品;而真正的名画则为前人所创造,存放在收藏室中。你的赝品画会和真品画一起被鉴定家鉴定,而你的终极目标是成为一个以假乱真的工艺大师。…

设置 Postman 环境并调用 API

云开发自带 API 调试 功能,可快速进行 API 接口调试,同时也支持通过 Postman 调用 API 获取设备信息或控制设备。本文介绍如何设置调用云开发 API 的 Postman 开发环境及调用接口实践。 配置环境 安装 Postman 8.2.2 及以上版本桌面软件。 版本过低会出…

Python类中的__init__() 和 self 的解析

1、Python中self的含义 self,英文单词意思很明显,表示自己,本身。 此处有几种潜在含义: 1.这里的自己,指的是,实例Instance本身。 2.同时, 由于说到“自己”这个词,都是和相对而…

《计算机网络》——第七章知识点

防火墙:特殊编程的路由器,实施访问控制策略。分为网络级防火墙(防止网络出现非法入侵)和应用级防火墙(进行应用的访问控制)。 本次文章详细PDF请点击以下链接查看: https://download.csdn.net/download/qq_53142796/87353770https://download.csdn.n…

市场回暖进行时,实体店商户们千万不要做这三件事!

随着防控措施的进一步优化,市场环境逐渐复苏,许多商户都趁着这段时间开始着手做准备,想要趁年前赚到消费回暖的第一波红利。 但是方向一旦错了,不管付出的努力有多少,最终也只能和想要的结果背道而驰;为了避…

图文结合带你搞懂MySQL日志之Slow Query Log(慢查询日志)

GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。作者:KAiTO文章来源:GreatSQL社区原创 什么是慢查询日志 MySQL 的慢查询日志,用来记录在 M…

ORB-SLAM2 --- Tracking::Track 追踪线程解析

1.函数作用 ORB-SLAM2的三大线程之一---跟踪线程,负责估计运动信息、跟踪局部地图。 追踪线程的主要工作原理就是我们从数据集中读入一帧帧,刚开始的时候跟踪线程没有进行初始化(没有初始化不知道世界坐标系的原点和相机的位姿)&a…

做开发的朋友说软件测试是个人都能学,我当面怒怼

那就分析一下测试工程师需要会哪些技能: 01 软件测试理论 作为一个软件测试人员,总不能不知道软件测试本身的东西吧。 你总要知道软件测试是什么?什么是测试用例?什么是缺陷?软件测试有些什么特点?这些…

OpenHarmony#深入浅出学习eTs#(八)“猜大小”小游戏

本项目Gitee仓地址:[深入浅出eTs学习: 带大家深入浅出学习eTs (gitee.com)]( 上一章节提到的模拟器存在的BUG问题,目前没有办法直接改善,本来打算直接使用鸿蒙远程设备来实现,但是发现支持API8的设备都被抢光了(包括模…

如何使用谷歌地图和LightningChart创建地理空间地图图表?

LightningChart JS 是一款高性能的 JavaScript 图表工具,专注于性能密集型、实时可视化图表解决方案。 LightningChart .JS | 下载试用(qun:740060302)https://www.evget.com/product/4189/download Google Static Maps API 是一…

前端基础(二)_JavaScript变量、JavaScript标识符、JavaScript获取元素、JavaScript的鼠标事件

一、JavaScript变量 变量是存储数据的容器,例x10,则x中存储的值为10。 语法:var 变量名 值。 1.1、变量的声明 先声明后赋值 var x; // 声明变量x alert(x); // undefined 所有声明了但是没有赋值的变量,结果都为undefined X…

单商户商城系统功能拆解55—后台设置

单商户商城系统,也称为B2C自营电商模式单店商城系统。可以快速帮助个人、机构和企业搭建自己的私域交易线上商城。 单商户商城系统完美契合私域流量变现闭环交易使用。通常拥有丰富的营销玩法,例如拼团,秒杀,砍价,包邮…

水文监测系统 水文遥测终端机 遥测终端机-助力母亲河平稳度汛

平升电子水文监测系统/水文遥测终端机/遥测终端机实现对江河流域水位、降水量、流量、流速、水质、闸门开启度、墒情等数据的实时采集、报送和处理。为防汛抗旱减灾提供科学依据和有效信息共享,保障人民群众生命财产安全,满足水利和经济社会发展对水文服…

虚拟化平台安装并升级显卡驱动

前言 在虚拟化平台上,虚拟化要使用vGPU,需要同时在主机和虚拟机上安装显卡驱动,主机和虚拟机的显卡驱动需要保守一致。安装驱动时先安装主机驱动,再安装虚拟机驱动。 驱动下载 可以从显卡官网许可中心下载对应的虚拟化驱动&…

一篇文章教小白学会搭建 vite + ts + vue3 项目,手把手教程,不会算我输

目录 一、基础环境和工具 1. 使用 pnpm 代替 npm 2. 使用 pinia 代替 vuex 3. 使用 windicss 4. 使用 vscode 5. 使用 sourcetree 6. 了解 vite ts vue 二、项目搭建 1. 流程图 2. 初始化项目 2.1 使用命令初始化项目 2.2 项目结构 3. 使用 git 3.1 创建本地的…

【JavaSE成神之路】数组思考题讲解

哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是数组的思考题讲解,也就是上一节我留下的两个小作业。 数组是非常重要的知识点,也是我们后续学习各种数据结构的基础&am…

【MMC子系统】 一、MMC/SD/SDIO介绍

个人主页:董哥聊技术我是董哥,嵌入式领域新星创作者创作理念:专注分享高质量嵌入式文章,让大家读有所得!文章目录1、前言2、MMC/SD/SDIO介绍3、总线接口4、参考文章1、前言 该节学习Linux Kernel的MMC子系统&#xff…