访问控制符

 

         访问控制符的作用是说明被声明的内容(类、属性、方法和构造方法)的访问权限,就像发布的文件一样,在文件中标注机密,就是说明该文件可以被那些人阅读。

         访问控制在面向对象技术中处于很重要的地位,合理的使用访问控制符,可以通过降低类和类之间的耦合性(关联性)来降低整个项目的复杂度,也便于整个项目的开发和维护。具体的实现就是通过访问控制符将类中会被其它类调用的内容开放出来,而把不希望别人调用的内容隐藏起来,这样一个类开放的信息变得比较有限,从而降低了整个项目开放的信息,另外因为不被别人调用的功能被隐藏起来,在修改类内部隐藏的内容时,只要最终的功能没有改变,即使改变功能的实现方式,项目中其它的类不需要更改,这样可以提高了代码的可维护性,便于项目代码的修改。

         在Java语言中访问控制权限有4种,使用三个关键字进行表达,依次如下:

<!--[if !supportLists]-->l  <!--[endif]-->public——公共的

<!--[if !supportLists]-->l  <!--[endif]-->protected——受保护的

<!--[if !supportLists]-->l  <!--[endif]-->无访问控制符——默认的

<!--[if !supportLists]-->l  <!--[endif]-->private——私有的

其中无访问控制符是指不书写任何的关键字,也代表一种访问权限,访问控制符的使用示例如下所示:

public class AccessControl {

                  int n;

                  public AccessControl(){

                            init();

                  }       

                  private void init(){}

                   protected void test(int k){}

}

         该示例代码中演示了各个访问控制符的实际使用示例,其中属性n的访问控制符就是默认的。

         在实际使用时,类声明的访问控制符只有2个:public和无访问控制符,属性声明、构造方法声明和方法声明的访问控制符可以是以上4种中的任何一个。

         这4个访问控制符的权限作用如下表所示:

访问控制符

同一个类内部

同一个包内部

不同包中的子类

不同包中的非子类

public

Yes

Yes

Yes

Yes

protected

Yes

Yes

Yes

No

无访问控制符

Yes

Yes

No

No

private

Yes

No

No

No

         说明:在该表中,Yes代表具备对应的权限,No代表不具备对应的权限。

         在4种访问控制中,public一般称作公共权限,其限制最小,也可以说没有限制,使用public修饰的内容可以在其它所有位置访问,只要能访问到对应的类,就可以访问到类内部public修饰的内容,一般在项目中开放的方法和构造方法使用public修饰,开放给项目使用的类也使用public修饰。protected一般称作继承权限,使用protected修饰的内容可以被同一个包中的类访问也可以在不同包内部的子类中访问,一般用于修饰只开放给子类的属性、方法和构造方法。无访问控制符一般称作包权限,无访问控制符修饰的内容可以被同一个包中的类访问,一般用于修饰项目中一个包内部的功能类,这些类的功能只是辅助其它的类实现,而为包外部的类提供功能。private一般称作私有权限,其限制最大,类似于文件中的绝密,使用private修饰的内容只能在当前类中访问,而不能被类外部的任何内容访问,一般修饰不开放给外部使用的内容,修改private的内容一般对外部的实现没有影响。

         下面以两个基本的示例来说明访问控制符在实际项目中的使用方式。

         第一个使用示例:在项目中,一般不会将类的属性开放给其它的类,也就是不允许外部的类直接访问属性,而是使用对应的存取方法来进行访问。例如在学校的学员管理系统中,需要实现的学生类,按照访问控制符的一般使用规则,实现的代码如下:

                   /**

 * 学员类,演示访问控制符的使用

 */

public class Student {

                            /**年龄*/

                            private int age;

                            /**学员ID*/

                            private int id;

                            public int getAge() {

                                      return age;

                            }

                            public void setAge(int age) {

                                      if(age < 0){

                                               //处理代码,未实现

                                      }

                                      this.age = age;

                            }

                            public int getId() {

                                      return id;

                            }

                            public void setId(int id) {

                                     //校验id是否合法的代码,未实现

                                      this.id = id;

                            }       

}

         通过将属性的访问权限设定为private,限制所有类外部对属性的访问,而为了让外部可以访问这些属性,专门声明对应的get/set方法来读取/存储数据,这样在设置属性值的set方法中,可以对于参数做出基本的校验,在上面的示例代码中,留出了校验参数的位置,具体的代码未在示例代码中实现。

         小技巧:在eclipse中,get和set方法可以在选中对应类的代码以后,使用“Source”菜单中的“Generate Getters and Setters…”菜单实现。

         第二个使用示例:在项目中,一般为了设计的需要实现一些特定的功能,下面介绍一下使用访问控制符实现的一个功能——使一个类既不能创建对象也不能被继承。实现的方法如下:该类中只实现一个构造方法,而且将该构造方法的访问权限设置为私有的。具体实现代码如下:

                   /**

 * 不能创建对象且不能被继承的子类

 */

public class PrivateDemo {

                            private PrivateDemo(){}

}

         在该示例中,PrivateDemo类只有一个构造方法,且该构造方法为私有。按照以前的介绍,创建对象时需要调用构造方法,而private修饰的构造方法无法在类的外部进行访问,所以无法创建对象。另外,在子类的构造方法中也需要调用父类的构造方法,由于private的构造方法无法得到调用,所以该类也不可以有对应的子类。

         这里说明的只是两个基本的用途,在实际的项目中,可以根据需要灵活的使用访问控制符实现对应的功能。

         总之,访问控制符通过控制声明的内容的访问权限,实现对于内容的隐藏,从而降低使代码的耦合性降低,降低项目的复杂度,并且方便实际项目中代码的维护。

转自:http://blog.youkuaiyun.com/Mailbomb/

嵌入式主板系统配置实战:OTG切换、双网共存与开机自启详解 在嵌入式Linux系统开发中,系统配置是连接硬件平台与应用功能的关键桥梁。其核心原理在于通过内核参数、文件系统接口和系统服务等机制,实现对硬件资源和系统行为的精细控制。掌握这些配置技术,对于提升开发效率、保障系统稳定性和实现产品差异化至关重要。无论是工业物联网网关、智能终端还是边缘计算设备,都需要对网络、USB、启动项等基础功能进行可靠配置。本文聚焦于嵌入式主板开发中的高频需求,例如OTG功能模式切换、双网共存路由策略以及基于systemd的开机自启动实现,通过具体的命令和脚本示例,为开发者提供一套可直接复 阅读详情

相关推荐

避开这些坑!Kaggle数据集下载常见问题及解决方案(含Header Editor插件配置)

本文针对Kaggle数据集下载过程中的常见难题,提供了系统性的解决方案。重点解决了验证码无法显示、API安装失败、密钥文件配置错误及下载命令执行问题,并详细介绍了使用Header Editor插件配置请求头以绕过验证码障碍的实战方法,帮助用户高效获取数据。

weixin_29043895的博客 303

Java 的访问控制符

Java 的访问控制符 ​ Java 提供了三个访问控制符:private、protected 和 public ,另外还有一个不加任何访问控制符的访问控制级别。 其四种访问级别关系由小到大为 private->default->protected->public private 访问控制级别:如果一个成员使用该控制符来修饰,则这个成员只能在该类的内部被访问。通常用于修饰属性,使用 private 来修饰属性可以把属性隐藏在类的内部。 default 访问控制级别(包访问权限):若一个成

qq_54522796的博客 2366

论文阅读:Visual Relationship Detection with Language Priors

Visual Relationship Detection with Language Priors(ECCV2016) 文章   尽管大多数的relationship并不常见,但是它们的object和predicate却更频繁地独立出现。paper用这个insight分别独立训练训练object和predicate的模型,然后再进行组合来预测relationship。Visual relatio...

Kivee的博客 2877

Java——访问控制(概念理解+应用举例)

Java——访问控制(概念理解+应用举例)

贝尔摩德苦艾酒 1万+

从零构建物联网数据中台:MQTT协议、Node.js服务、MongoDB与InfluxDB双存储及React可视化实战

本文详细介绍了从零构建物联网数据中台的完整实战方案。通过采用MQTT协议作为设备通信标准,结合Node.js搭建高并发数据处理服务,并创新性地使用MongoDB与InfluxDB双存储架构分别管理设备元数据与海量时序数据,最后利用React构建了实时数据可视化控制台。该架构有效解决了物联网项目中数据异构、查询性能低下等核心痛点,为构建高效、可扩展的物联网平台提供了清晰路径。

weixin_28432777的博客 292

R爬虫RSelenium环境搭建及简单应用

这是鄙人自己实践的一种可行的环境搭建,我会尽量详细的写下大家步骤。

weixin_44349986的博客 2015

Java:访问控制符

访问控制符 1.软件中的某些属性和方法出于程序安全考虑不允许被其它类操作和调用,这就需要使用Java中的访问权限修饰符,Java中的访问权限修饰符有4种:     2.Java中的访问权限修饰符可以修饰成员变量、构造方法、普通方法。   3.全面研究某个访问权限的使用范围需要从以下方法考虑:     4.访问控制符使用范围: public是最大的访问权限修饰符,其修饰的...

龙雪的博客 690

SRAM compiler中Power Gating与Retention的实战配置指南

本文深入解析了在SRAM compiler中配置Power Gating(电源门控)与Retention(数据保持)功能的实战指南。针对低功耗芯片设计,文章详细阐述了如何根据应用场景(如移动AP、IoT设备)权衡开关类型、尺寸、唤醒时序以及保持电压,以实现静态功耗优化与数据可靠性的最佳平衡,并强调了后端实现与签核检查的关键要点。

weixin_29204121的博客 296

Java 访问控制修饰符

Java 中有 4 种访问权限分别为 private、default、protected、public。

kevin 2925

【Matlab】飞行器气动弹性仿真与分析

气动弹性是飞行器设计领域的核心交叉学科,融合了空气动力学、结构动力学和控制理论,主要研究飞行器结构在气动力作用下的弹性变形、振动响应及相互耦合规律,直接影响飞行器的飞行稳定性、操纵性和结构安全性。随着飞行器向高速度、高机动性、轻量化方向发展,气动弹性问题愈发突出,如颤振、发散、嗡鸣等现象,严重时会导致飞行器结构破坏甚至飞行事故,因此气动弹性仿真与分析已成为飞行器设计、验证和优化的关键环节。当前,飞行器气动弹性仿真面临诸多技术挑战:气动力与结构变形的强耦合特性难以精准描述,易出现仿真误差;

unber的博客 238

pb插入ole控件点击insert+control时自动关闭解决办法

也就是说pb搜索CLSID的子项保存在OLE Object Bitmaps中,当搜索CLSID中的DLL或OCX控件和PB有冲突时,CLSID后面的DLL、OCX控件就不会保存在OLE Object Bitmaps中,也就是说OLE Object Bitmaps没有完全加载所有控件,有的控件冲突导致中断使PB报错,找出冲突的控件是关键。进行对出问题的控件反注册,如果提示反注册成功,打开PB的OLE控件看是否报错,如果还报错返回步骤(三)循环查找。,再进入注册表看到的是最正确的。来注册会莫名的冲突,但是用。

悠闲饭团的博客 711

Java访问控制符

Java提供了4种访问控制符,主要用于控制其他类是否可以访问某一类中的属性或方法,从而实现数据封装。四种访问控制符的权限大小(由大到小)为public(公共)、protected(保护)、default(默认)、 private(私有)。 private(私有):当类中属性或方法被private修饰时,表示此成员或方法只能被自己类中的方法使用,而不能被外部类或对象直接使用。例如: publ

蓝沐的博客 1万+

uniapp - 解决报错 TypeError: e[t] is not a function(Uniapp项目运行或打包编译时提示错误e[t] is not a function,全平台端均可搞定)

uniapp,报错,TypeError: e[t] is not a function,uniapp App端报错,Android端,苹果ios打包报错,运行报错,uniapp打包报错e[t] is not a function,无法运行提示错误,uniapp live-pusher直播推流,maps地图组件,uni-app live-pusher 报错TypeError: e[t] is not a function,uni-app maps报错TypeError: e[t] is not a funct

✅ 精选推荐文章 8223

访问控制符和非访问控制符

访问权限修饰符 public:共有访问。对所有的类都可见。 修饰类: public(访问控制符),将一个类声明为公共类,它可以被任何对象访问,一个程序的主类必须是公共类。 修饰方法: 包外包内都可以调用该方法。 修饰变量: 指定该变量为公共的,它可以被任何对象的方法访问。 protected:保护型访问。对同一个包可见,对不同的包的子类可见。 修饰方法: 指定该方法可以被它的类和子类进行访问 修饰...

Txmouse的博客 762

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

java中的访问控制符_java中的访问控制符

首先来一张图:对于一个类而言访问控制符只有一个public和默认无修饰符。其他的几个访问修饰符对于变量和方法都可以使用。下面介绍具体的使用。1. 公有访问控制符(public)Java的类是通过包的概念来组织的,包是类的一个松散的集合。处于同一个包中的类可以不需要任何说明二方便地相互访问和引用,而对于不同包中的类,则不行。但如果一个类被声明为public时,它就具有了被其他包中的类访问的可能性,只...

weixin_30290673的博客 740

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java访问控制符

java访问控制符一、java访问控制符是什么?二、java访问控制符分为哪几种1.public2.private3.default4.protected5.访问控制符之间的区别三、访问控制和继承 一、java访问控制符是什么? Java 访问控制符. Java 中可以使用 访问控制符 来保护对类、变量、方法和构造方法的访问. Java 语言中有 4 种不同的访问权限. default ( 即缺省,什么也不写 ) 在同一包内可见,不使用任何控制符. 使用对象:类、接口、变量、方法. 二、java访问控

m0_62478822的博客 480

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Java中访问控制符和常用的非访问控制符

访问控制符     类的成员变量和方法都有访问权限的控制。由于类中封装了数据和代码,包中封装了类和其他的包,所以Java 提供了对类成员在四种范围中的访问权限的控制,这四种范围包括:同一个类中、同一个包中、不同包中的子类、不同包中的非子类。访问权限则包括private,protected, public 和默认。 同一个类中 同一个包中 不同包中的...

qq_44753080的博客 1436

Java的访问控制符

Java的访问控制符 Java的访问控制符分为两类:外部类的访问控制符,属性和方法的访问控制符。 1.外部类的访问控制符有两种:public和default(默认的,什么都不用写) public:公共访问控制符 default:包内访问控制符 使用public修饰的外部类可以被所有类使用;使用default修饰的外部类只能被同一个包中的其它类使用。 2.属性和方法的访问控制

wuhaosky的专栏 979

从源码学习访问控制符使用

​ 在Java中,有四个访问控制符:public、protected、default(默认或缺省,不使用关键字)和private。​ 通过合理使用访问控制符,可以控制类、方法、变量等成员的访问权限,从而提高代码的封装性和安全性。​ 访问控制符,可以用来修饰类、方法和变量。使用不同的控制符,可以达到不同的权限控制效果。​ 根据迪米特法则,也即最少知道原则,我们应该尽可能少的暴露内部细节,只需要暴露需要对外暴露的部分,已提高封装性和安全性。

weixin_40709965的博客 1319

java的访问控制符有哪些 各有什么作用_java如何访问控制符?

访问控制符的作用是说明被声明的内容(类、属性、方法和构造方法)的访问权限,就像发布的文件一样,在文件中标注机密,就是说明该文件可以被那些人阅读。访问控制在面向对象技术中处于很重要的地位,合理的使用访问控制符,可以通过降低类和类之间的耦合性(关联性)来降低整个项目的复杂度,也便于整个项目的开发和维护。具体的实现就是通过访问控制符将类中会被其它类调用的内容开放出来,而把不希望别人调用的内容隐藏起来,这...

weixin_39572794的博客 1381

控制符java,java中的访问控制符

最近在看java基础,有些东西看起来很简单,但是细思极恐,发现他们在我的脑海中其实只留下了一个极其抽象的概念,比如java中的访问控制符。今天我正好看到这一块,把自己的学习心得写下来,在本文的最后有一个疑问,我没想明白,欢迎大家留言讨论。java中主要有如下几个访问控制符public protected default private上面就是按照范围的递减顺序排列的。那么所谓的范围到底是什么意思呢...

weixin_30851655的博客 122

C++系列十八:访问控制符

在C++中,访问权限控制符用于限制类成员的访问权限,主要包括public、private和protected三种。这些访问权限控制符用于控制类成员的访问级别,从而保证数据的封装性和安全性。

聚集机器学习、信息安全 2272

2.访问控制符

在 Java 程序设计中,有一个很重要的知识点,就是访问控制符。不要看它的内容简单,但其重要性决定了程序可运行性。 一.什么是访问控制符 访问控制符在 Java 程序语言中,有着举足轻重的作用。那什么是访问控制符呢?所谓的访问控制符就是能够在控制访问权限的关键字。在 Java 程序语言中的访问控制符有好几种,但是它又被分为不同的类别,具体的划分情况如下: (1)出现在类之前的访问控制符:

413

Java中访问控制符

说明: Java中提供了四种访问控制符,分别是private,default,protected和public,其访问控制级别从小到大如图所示: (1)private:(当前类访问权限) 用private修饰的变量或方法只能被该类自身所访问和修改,而且不能被其他任何类(包括该类的子类)来获取和引用。很显然,private用来修饰成员变量最合适,使用它来修饰成员变量就可以把成员变量隐藏在该...

m0_37671741的博客 686
上一篇: Go on
下一篇: 谷歌李开复参加"咏乐会",对大学生求职的一些建议
java_cto
博客等级 码龄18年 5粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值