`
Tony_Lee-S
  • 浏览: 81640 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

protected数据和方法

阅读更多

经常需要允许子类访问定义在父类中的数据域或方法,但不允许非子类访问这些数据域和方法。可以使用关键字protected完成该功能。父类中被保护的数据域或方法可以在它的子类中访问。

修饰符private、protected和public都称为可见性修饰符或可访问性修饰符,因为它们指定如何访问类和类的成员。这些修饰符的可见性关系为:private < protected < public。下表总结了类中成员的可访问性。

数据和方法的可见性
类中成员的修饰符 在同一类内可访问 在同一包内可访问 在子类内可访问 在不同包可访问
public + + + +
protected + + + -
default + + - -
private + - - -

使用private修饰符可以完全隐藏类的成员,这样,就不能从类外直接访问它们。不使用修饰符就表示允许同一个包里的任何类直接访问类的成员,但是其他包中的类不可以访问。使用protected修饰符允许任何包中的子类或同一包中的类访问类的成员。使用public修饰符允许任意类访问类的成员。

类可以以两种方式使用:一种是为创建该类的实例;另一种是通过扩展该类创建它的子类。如果不想从类外使用类的成员,就把成员声明成private。如果想让该类的用户都能使用类的成员,就把成员声明在public。如果想让该类的扩展都使用数据和方法,而不想让该类的用户使用,则把成员声明成protected。

修饰符private和protected只能用于类的成员。public修饰符和默认修饰符(也就是没有修饰符)既可以用于类的成员,同样也可以用于类。一个没有修饰符的类(即非公共类)是不能被 其他包中的类访问的。

注意 子类可以覆盖它的父类的protected方法,并把它的可见性改为public。但是,子类不能削弱父类中定义的方法的可见性。例如:如果一个方法在父类中定义为public,在子类中也必须定义为public。

分享到:
评论

相关推荐

    Wi-Fi Protected Access 数据加密和数据完整性

    Wi-Fi Protected Access(WPA)是无线网络领域中一种重要的安全标准,旨在提供更好的加密机制和数据完整性,保护用户在无线局域网(WLAN)中的通信安全。本篇文章将深入探讨WPA的工作原理、加密技术和数据完整性机制...

    public_protected_private用法详解

    `private`成员强制实现数据隐藏,`public`和`protected`成员则提供接口供外部代码交互。合理的访问控制能够帮助降低耦合度,提高代码的可维护性和可扩展性。 6. **包内访问(默认访问权限)** - 在Java中,还有一...

    .net 里面 protected private 的变量也可以访问

    这种访问权限设计是为了在继承时保持数据的一致性和安全性,允许子类对基类的内部状态进行必要的操作或扩展。 然而,在.NET中,存在一种特殊情况,即`protected private`组合。这种组合在C#中并不常见,但在C++/CLI...

    C# 修饰符:private protected internal public

    - **示例**:虽然文中没有直接给出 `protected` 的例子,但我们可以设想一个场景:如果 `Tiger` 类是从另一个抽象类 `Animal` 派生而来,那么可以在 `Animal` 类中定义一个 `protected` 的方法或属性,以便 `Tiger` ...

    GridView模板列前台绑定数据和后台接收控件被绑定数据的方法探讨

    本篇文章将深入探讨两种不同的数据绑定方式:前端(客户端)绑定和后端(服务器端)绑定,以及如何在后台接收控件被绑定的数据。 首先,我们来讨论模板列前台绑定数据的方法。这种方法通常用于展示简单的数据或进行...

    在不同Activity之间传递数据的四种常用方法

    在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4.通过全局对象传递数据 在...

    Protected Mode Software Architecture.rar

    段机制允许灵活的内存管理和访问控制,确保了代码和数据的安全性。 3. **页表与分页**:为了进一步优化内存管理,保护模式使用了页表进行虚拟内存映射。页表将物理内存划分为固定大小的页,通过页表映射实现虚拟...

    数据结构用面向对象方法与c++语言描述

    《数据结构用面向对象方法与C++语言描述》是一本深度探讨如何利用C++编程语言来实现和理解数据结构的著作。这本书的核心在于将面向对象编程的理念与数据结构的理论相结合,为学习者提供了一种现代化的教学方式。通过...

    JEDEC JESD260:2021 Replay Protected Monotonic Counter (RPMC) for

    总结来说,《JEDEC JESD260:2021 Replay Protected Monotonic Counter (RPMC) for Serial Flash Devices》是串行闪存设备安全设计的重要参考,它为开发者提供了实施RPMC的详细规范和指导,以增强设备的数据完整性和...

    asp.net TreeView数据绑定方法.rar

    - **绑定数据**:调用`DataBind()`方法来连接数据源和TreeView控件。 - **定义节点结构**:使用`TreeNode`类创建节点,并设置其属性,如文本、值、导航URL、子节点等。这可以通过在控件声明或代码-behind中完成。 ...

    Java基础习题

    当你创建一个类并用这些访问修饰符来声明数据成员和方法时,尝试访问它们会产生不同的结果。例如,尝试从外部访问私有成员会导致编译错误,因为这是不允许的。而访问受保护的成员仅限于子类和同包内的类,所以跨包...

    Thinkphp3.2.3自定义添加数据表及表中字段

    在ThinkPHP3.2.3中,自定义添加数据表是通过模型(Model)类和数据库操作类(DB)来实现的。首先,你需要创建一个新的模型类,这个类将代表你要创建的数据表。模型类通常继承自ThinkPHP的基础模型类,例如`Think\Model`...

    用java代码来解析private、public、default、protected的权限问题

    在Java编程语言中,访问修饰符是控制类成员(如变量、方法和构造器)访问权限的关键要素。...在实际开发中,根据需求选择合适的访问权限,可以有效防止不必要的数据暴露,提高代码的可维护性和安全性。

    安卓开发-Activity间数据传递和回传

    在这个方法中,我们可以根据`requestCode`和`resultCode`来判断数据的来源及是否有效。 ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super....

    细谈Delphi中的private,public,protected

    通过控制类成员(属性和方法)的可见性,我们可以有效地管理类的内部状态,并确保外部代码只能通过定义好的接口与类交互。Delphi作为一种流行的开发工具,提供了`private`、`public`和`protected`等关键字来实现这一...

    C#中读取XML中数据的2种方法

    这两种方法都依赖于.NET框架中的`System.Data`和`System.IO`命名空间,确保在代码顶部引入相应的引用: ```csharp using System; using System.Data; using System.IO; ``` 总结来说,C#中读取XML数据主要依赖于`...

    Gatk-protected-master

    4. **测试数据和基准测试**:GATK通常包含用于验证工具正确性的基准数据和测试用例,这对于调试和改进代码至关重要。 深入研究"Gatk-protected-master"源代码,不仅可以学习到GATK的内部运作机制,还能提升对生物...

    Protected Interoperable File Format (PIFF) 1.1

    PIFF(Protected Interoperable File Format)是一种文件格式,它旨在提供一种安全、兼容的方法来编码音频和视频对象。这种格式的主要目的是促进不同设备和平台之间的互操作性,确保内容的保护和版权的安全性。PIFF...

    PHP实现在对象之外访问其私有属性private及保护属性protected的方法

    总之,PHP中的访问修饰符是面向对象设计的关键元素,它们确保了数据的安全性和封装性。在对象之外访问私有和保护属性应当谨慎,通常应通过提供公共接口(如getter和setter)来实现,以维护代码的可维护性和稳定性。...

    两窗体间传递数据。方法一:通过属性实现;方法二:通过委托实现。

    以下是两种主要的方法来实现这种数据传递:通过属性和通过委托。 **方法一:通过属性实现** 在.NET中,窗体可以被定义为类,因此我们可以为这些类添加自定义的属性来存储和共享数据。以下是一种简单的实现方式: ...

Global site tag (gtag.js) - Google Analytics