`
liuwei1981
  • 浏览: 772133 次
  • 性别: Icon_minigender_1
  • 来自: 太原
博客专栏
F8258633-f7e0-30b8-bd3a-a0836a5f4de5
Java编程Step-by...
浏览量:161228
社区版块
存档分类
最新评论

60.访问控制

 
阅读更多

前面讲到了继承,通过继承,可以让子类拥有父类中已经实现的属性和方法,避免在整个软件体系中,出现重复的代码,提高软件的开发效率和可靠性。

 

但是有的时候,我们希望父类中的某些属性和方法,仅用于父类自己使用,对子类保密。

 

并且很多时候,当别的对象调用该类对象的时候,也希望这些调用操作是有限制,类的设计只保持部分方法接口公开。

 

这就需要在类定义的时候,进行访问控制。

 

在开始时其实已经说到了,通过将属性设置为private(私有的)的,可以限制对相应属性的访问。

 

在Java中,可以在类、类的属性以及类的方法前面加上一个修饰符(modifier),来对类进行一些访问上的控制。

 

比如,我们在前面已经讨论过的,一般情况下将类的属性定义为私有(private)的,而通过公共的(public)方法来对这些属性进行访问。

 

在这个类程序外的其他程序只能通过公共的方法来访问这个类的属性,这样,实现了信息的隐藏和封装

 

但是,有时候我们也需要让其他的程序直接访问类的属性,或者只能让子类访问父类的属性,这个时候就不能用private来限制这些属性了。


在Java中,定义了三个修饰符用来控制类、类的属性以及类的方法等的访问范围。通过这三个修饰符,可以定义四种程度的限制。

 

下面将对这些修饰符作详细的说明。

private:这是限制最严格的一个修饰符,使用这个关键字来限制的属性或者方法,只能在同一个类中被访问。也就是说,在这个类文件之外,这些属性或方法是被隐藏的。这个修饰符最常用于修饰类中的全局变量。

 

注意,这个修饰符不能用在类前面。


DefaultDefault不是关键字,只是对类、类的属性以及类的方法的访问权限的一种称呼。如果在类、类的属性、类的方法前面没有添加任何的修饰符,则我们说它的访问权限是default的。

 

在这种情况下,只有类本身或者同一个包中的其他类可以访问这些属性或方法,而对于其他包中的类而言是不可访问的。


protected:protected修饰符修饰的属性或方法,可以被同一个类、同一个包中的类以及子类访问。注意,这个修饰符同样不能用于类前面。


public :这个修饰符对类、类的属性以及类的方法均可用。它是限制最宽松的一种限制,使用这个修饰符修饰的类属性、类的方法可以被任何其他的类访问,无论这个类是否在同一个包中,以及是否是子类等。


一般来说,我们应该将和其他类无关的属性或者方法设置为private的,只有需要将它给其他的类访问的属性或方法才将它设置为public或者protected,或者不加任何修饰符,让其为default。


访问控制修饰符的限制程度从高到低为:private Default protected public。


注意:
  Default不是Java关键符,它只是表明了一种访问限制状态。

 

 

分享到:
评论

相关推荐

    基于角色访问控制.pdf

    - **起源**: 访问控制的概念最早起源于20世纪60年代的大型机时代,随着计算机技术的发展逐渐演进。 - **发展**: 20世纪80年代后期至90年代初,随着网络技术的普及和发展,传统的访问控制方法开始显得力不从心。在此...

    apache-tomcat-9.0.60.tar.gz

    3. **安全性**:Tomcat的安全配置涉及到访问控制、SSL/TLS证书配置以及用户认证等,这通常需要编辑 `conf/server.xml` 和 `conf/tomcat-users.xml` 文件。 4. **性能优化**:可以通过调整JVM参数、设置线程池大小、...

    mspdb60.dll

    - **权限控制**:由于mspdb60.dll涉及到编译和调试过程,因此对它的访问应受到适当的权限控制,防止恶意代码利用其功能进行攻击。 - **更新与修复**:及时更新mspdb60.dll至最新版本,可以避免已知的安全漏洞,...

    摄像头编程一例ezVidC60.ocx for VB5 / VB6

    VFW.bas可能是包含VFW函数和常量的代码模块,帮助开发者访问和控制摄像头硬件。 2. CmnDlg.bas:通常用于实现常见的对话框,如打开文件、保存文件等。在摄像头编程中,可能用于设置摄像头参数或选择保存视频的位置...

    Armbian_21.08.1_IBOX3399_V4_focal_current_5.10.60.img.7z

    固件是一组用于控制硬件设备运行的软件,包括操作系统、驱动程序和其他必要的工具,使得硬件能够执行特定的任务。在本例中,九鼎IBOX3399_V4可能是一款基于ARM Cortex-A处理器的嵌入式设备,如开发板或工控机。 ...

    iDRAC-with-Lifecycle-Controller_Firmware_40T1C_WN32_2.63.60.61_A00.zip

    iDRAC(Integrated Dell Remote Access Controller)是戴尔公司推出的一种远程访问控制器,它集成在戴尔的PowerEdge服务器系列中,提供了对服务器硬件的远程监控、管理和维护功能。Lifecycle Controller则是iDRAC的...

    MASM50.MASM51.MASM60.MASM611.MASM611FULL.MASM614.MASM615工具

    标题中的“MASM50.MASM51.MASM60.MASM611.MASM611FULL.MASM614.MASM615工具”指的是Microsoft Macro Assembler(MASM)的不同版本或相关的工具集合。MASM是微软公司开发的一个汇编语言编译器,用于将汇编语言代码...

    apache-kylin-3.1.0-bin-cdh60.tar.gz

    - **角色和权限管理**:Kylin允许设置不同的访问权限,控制不同用户对数据和操作的访问。 8. **扩展性与最佳实践**: - **水平扩展**:当查询负载增加时,可以通过增加更多的节点来扩展Kylin集群。 - **优化建议...

    n70远程连接Remote.S60.Pro.v2.93-CHS-fayho_tigerSW.cn_979

    诺基亚N70作为一款经典的S60平台手机,虽然硬件配置相对较低,但通过这类远程连接软件,可以使其具备更多功能,如远程访问电脑的文件系统、控制桌面应用程序等。 该软件的主要特点可能包括: 1. **蓝牙连接**:...

    基于ENC28J60以太网控制器的SPI接口设计.pdf

    - **集成MAC与PHY**:集成了介质访问控制器(MAC)和物理层(PHY)功能,减少了外部组件需求。 - **内置RAM**:包含64KB的SRAM,用于存储接收和发送的数据包。 - **SPI接口**:采用标准SPI接口与主控制器进行通信,仅需4...

    ENC28J60-H.pdf

    - **集成化**:集成了MAC(媒体访问控制)层和10Base-T PHY(物理层),简化了硬件设计。 - **端口支持**:提供一个10Base-T端口,具备自动极性检测和校正功能,确保数据传输的准确性。 - **工作模式**:支持全...

    libdispatch-1324.60.3

    6. **Dispatch Semaphores**:类似于传统的信号量,它们用于控制资源的访问,限制同一时间可以访问资源的线程数量。 在版本1324.60.3中,可能包含了性能优化、bug修复以及与XNU 8019.61.5内核版本的兼容性改进。...

    NET-ENC28J60.rar_ENC28J60_ENC28J60 HR911105A_ENC28J60 hr911105a

    它集成了MAC(媒体访问控制)和PHY(物理层)功能,使得微控制器可以通过简单的SPI串行接口与之通信,从而实现网络连接。ENC28J60的优势在于其节省了主处理器的资源,降低了系统复杂性,特别适合资源有限的嵌入式...

    Python库 | mypy-boto3-applicationcostprofiler-1.18.60.tar.gz

    标题中的“Python库 | mypy-boto3-applicationcostprofiler-1.18.60.tar.gz”指的是一款基于Python的开源库,名为mypy-boto3-applicationcostprofiler,版本号为1.18.60,该库被打包成tar.gz格式的压缩文件。...

    Python库 | collab-1.0.60.tar.gz

    - **协作编辑**:可能支持实时的代码编辑和版本控制,让团队成员可以同时编辑同一份文件,并记录每次更改。 - **权限管理**:可能有用户和角色的概念,可以设置不同的访问和操作权限,确保数据的安全性。 - **事件...

    Tomcat-8.5.60

    6. **安全性**:Tomcat 8.5.60提供了多种安全功能,包括SSL/TLS支持、角色基础的访问控制(RBAC)、用户认证(通过 Realm 配置)以及对HTTPS的支持。开发者可以通过`server.xml`中的`<Connector>`元素配置这些安全...

    ENC28J60.rar_ENC28J60_STM32与enc28j60_stm32 enc28j60

    它集成了MAC(介质访问控制)层和PHY(物理层),可以处理以太网帧的发送和接收,是许多嵌入式系统理想的网络解决方案,特别是那些资源有限但需要网络功能的项目。 STM32是意法半导体(STMicroelectronics)推出的...

    MxsDoc文件管理系统 v2.02.60.zip

    MxsDoc能够支持各种编程语言的源代码文件管理,提供版本控制、代码注释、搜索等功能,帮助开发者更有效地追踪代码修改历史,便于团队协作和代码审查。 2. **毕业设计论文管理**:针对学术研究领域,MxsDoc提供了...

    PyPI 官网下载 | mypy-boto3-workmail-1.18.60.tar.gz

    Boto3是Amazon Web Services (AWS)的官方Python SDK,它允许开发者使用Python轻松地访问各种AWS服务,如EC2、S3和RDS。WorkMail是AWS提供的企业级电子邮件和日历服务,用于管理和控制组织的邮件通信。mypy-boto3-...

Global site tag (gtag.js) - Google Analytics