经常需要允许子类访问定义在父类中的数据域或方法,但不允许非子类访问这些数据域和方法。可以使用关键字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(WPA)是无线网络领域中一种重要的安全标准,旨在提供更好的加密机制和数据完整性,保护用户在无线局域网(WLAN)中的通信安全。本篇文章将深入探讨WPA的工作原理、加密技术和数据完整性机制...
`private`成员强制实现数据隐藏,`public`和`protected`成员则提供接口供外部代码交互。合理的访问控制能够帮助降低耦合度,提高代码的可维护性和可扩展性。 6. **包内访问(默认访问权限)** - 在Java中,还有一...
这种访问权限设计是为了在继承时保持数据的一致性和安全性,允许子类对基类的内部状态进行必要的操作或扩展。 然而,在.NET中,存在一种特殊情况,即`protected private`组合。这种组合在C#中并不常见,但在C++/CLI...
本篇文章将深入探讨两种不同的数据绑定方式:前端(客户端)绑定和后端(服务器端)绑定,以及如何在后台接收控件被绑定的数据。 首先,我们来讨论模板列前台绑定数据的方法。这种方法通常用于展示简单的数据或进行...
在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4.通过全局对象传递数据 在...
段机制允许灵活的内存管理和访问控制,确保了代码和数据的安全性。 3. **页表与分页**:为了进一步优化内存管理,保护模式使用了页表进行虚拟内存映射。页表将物理内存划分为固定大小的页,通过页表映射实现虚拟...
《数据结构用面向对象方法与C++语言描述》是一本深度探讨如何利用C++编程语言来实现和理解数据结构的著作。这本书的核心在于将面向对象编程的理念与数据结构的理论相结合,为学习者提供了一种现代化的教学方式。通过...
总结来说,《JEDEC JESD260:2021 Replay Protected Monotonic Counter (RPMC) for Serial Flash Devices》是串行闪存设备安全设计的重要参考,它为开发者提供了实施RPMC的详细规范和指导,以增强设备的数据完整性和...
- **绑定数据**:调用`DataBind()`方法来连接数据源和TreeView控件。 - **定义节点结构**:使用`TreeNode`类创建节点,并设置其属性,如文本、值、导航URL、子节点等。这可以通过在控件声明或代码-behind中完成。 ...
当你创建一个类并用这些访问修饰符来声明数据成员和方法时,尝试访问它们会产生不同的结果。例如,尝试从外部访问私有成员会导致编译错误,因为这是不允许的。而访问受保护的成员仅限于子类和同包内的类,所以跨包...
在ThinkPHP3.2.3中,自定义添加数据表是通过模型(Model)类和数据库操作类(DB)来实现的。首先,你需要创建一个新的模型类,这个类将代表你要创建的数据表。模型类通常继承自ThinkPHP的基础模型类,例如`Think\Model`...
在Java编程语言中,访问修饰符是控制类成员(如变量、方法和构造器)访问权限的关键要素。...在实际开发中,根据需求选择合适的访问权限,可以有效防止不必要的数据暴露,提高代码的可维护性和安全性。
在这个方法中,我们可以根据`requestCode`和`resultCode`来判断数据的来源及是否有效。 ```java @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super....
通过控制类成员(属性和方法)的可见性,我们可以有效地管理类的内部状态,并确保外部代码只能通过定义好的接口与类交互。Delphi作为一种流行的开发工具,提供了`private`、`public`和`protected`等关键字来实现这一...
这两种方法都依赖于.NET框架中的`System.Data`和`System.IO`命名空间,确保在代码顶部引入相应的引用: ```csharp using System; using System.Data; using System.IO; ``` 总结来说,C#中读取XML数据主要依赖于`...
4. **测试数据和基准测试**:GATK通常包含用于验证工具正确性的基准数据和测试用例,这对于调试和改进代码至关重要。 深入研究"Gatk-protected-master"源代码,不仅可以学习到GATK的内部运作机制,还能提升对生物...
通常,我们会创建一个继承自QThread的子类,并重写`run()`方法,在其中实现串口接收和数据保存的逻辑。在主线程中,我们创建这个子类的实例,并调用`start()`方法启动新线程。 下面是一个简化的示例代码结构: ```...
PIFF(Protected Interoperable File Format)是一种文件格式,它旨在提供一种安全、兼容的方法来编码音频和视频对象。这种格式的主要目的是促进不同设备和平台之间的互操作性,确保内容的保护和版权的安全性。PIFF...
通常,我们会在这个方法中获取`ThreadLocal`中的数据源信息,并作为返回值,这样`AbstractRoutingDataSource`就会根据这个信息选择合适的数据源。 下面是一个简单的代码实现示例: ```java // ...