protected成员:(《C++ primer》给出的概念)
- 像private成员一样,protected成员不能被类的用户(也称为对象) 访问。
- 像public成员一样,protected成员可被该类的派生类访问。
- 派生类只能通过派生类对象访问其基类的protected对象,派生类对其基类类型对象的protected成员没有特殊的访问权 限。
对于第三条,个人认为很难理解。经过仔细思考并通过实际程序验证,算是基本理解,我的理解如下:
首先,假设Apple类有个成员函数memfun(cont Apple &a, const Fruit &f )。则在函数memfun中可以直接调用自身从基类继承来的price,也可以通过形参a访问a的price ( a.price ),这里a的类型也可以为FujiApple,但要经过测试a的类型不可以为orange。同时对于形参f也是被拒绝访问其price 成员的( f.price )。
经过测试最后总结如下:
一个类(假如既有基类又有派生类),则该类成员可以访问自身的protected成员或从基类继承来的protected成员,也可以访问为该类类型对象的protected成员,同时也可以访问其类型为派生类对象的protected成员。但不可以访问类型为基类对象的protected成员,及基类其它派生类的protected成员。
从上图可以看出类继承中的protected成员访问路线为下垂形,即:一个类只可以对自身类或同类类型对象protected访问,也可以访问其派生类从基类继承的protected成员,但是不可以访问派生类自身定义的protected成员。
这只是个人的理解,有理解错误的地方请大家一定要告诉我,大家谁有更好的理解方法也可以拿来分享下。
- 大小: 10.8 KB
分享到:
相关推荐
本篇文章将深入探讨`protected`关键字的含义、用法以及它在实际开发中的应用。 1. `protected`的含义: `protected`是一种中级访问权限,它允许同一包内的所有类以及不同包中的子类访问被修饰的成员。相比于`...
也就是说,基类的public成员在派生类中仍是public成员,protected成员在派生类中仍是protected成员,private成员在派生类中仍是private成员。 2. protected继承 在protected继承中,基类的public成员、protected...
在这个深入理解中,我们将详细探讨`protected`关键字的含义、用法以及其在多态和继承中的行为。 首先,`protected`关键字的基本概念是它比默认(包级私有)权限更开放,但比`public`权限更受限。与`public`不同,`...
本文将深入探讨Java(以及其他面向对象语言)中的`public`、`protected`和`private`这三个访问修饰符,以及它们在派生类中的应用。 1. **公共访问修饰符(public)** - `public`是最宽松的访问级别,表示任何地方...
为了更深入理解Java的封装特性,特别是`protected`的使用,可以编写测试例程来验证这些规则。通过创建不同包内的类和子类,并观察它们如何访问`protected`成员,可以直观地理解访问控制的规则。例如,可以创建一个...
5. 类与对象的访问控制:Java的访问修饰符(public, private, protected, package-private)是控制类和成员访问的重要手段。理解这些访问级别对于构建安全的应用至关重要,因为它们可以帮助防止未经授权的代码访问...
在本节“VS2010轻松学习C# - 从零到深入 - 天轰穿.NET4趣味编程视频教程”的第14讲中,我们将深入探讨C#编程中的核心概念——类成员,特别是方法与静态关键字的使用。天轰穿老师的教程以其生动有趣的教学方式,使得...
本文将深入探讨`private`、`public`、`default`(默认)和`protected`这四种访问权限,并通过代码示例来解析它们在实际编程中的应用。 1. `private`权限: `private`是最低级别的访问权限,它限制了成员只能在同一...
深入理解C#语法是成为高效C#程序员的关键。本篇将全面解析C#语法的核心概念,帮助你从基础到进阶,逐步掌握这一强大的语言。 一、基础语法 1. 变量:C#中的变量用于存储数据,分为基本类型(如int, double, bool等...
在本节"VS2010轻松学习C#-从零到深入-天轰穿.NET4趣味编程视频教程_第12讲:封装与类成员"中,天轰穿老师将引导我们深入理解C#编程中的核心概念——封装以及类成员的使用。封装是面向对象编程的一个关键特性,它有助...
public成员对类内外都是可访问的,private成员仅对类内部可见,而protected成员虽然对外部不可见,但允许派生类的成员函数访问。因此,从用户的角度来看,protected成员类似于private成员,但提供了一种在派生类中...
本教程将深入探讨C类的成员变量和成员函数,帮助你更好地理解和掌握面向对象编程的核心概念。 一、成员变量(Member Variables) 成员变量,也称为数据成员,是类内部的变量,用于存储对象的状态信息。它们可以是...
在本文中,我们将深入探讨类中的成员变量及其访问限制符:`public`、`private` 和 `protected` 的用法及作用。 ### 公共(Public) `public` 是一个访问控制修饰符,它表示该成员变量或方法可以被任何地方访问,...
本文将深入探讨C#中的继承制,包括基础知识、规则、访问控制以及多态性,帮助读者理解如何有效地利用继承提高代码的复用性和可扩展性。 一、继承基础知识 继承允许一个类(称为派生类或子类)从另一个类(称为基类...
### 类成员的保护 在C++程序设计中,类成员的访问控制是非常重要的概念,它有助于维护代码的安全性和封装性。本文将详细介绍类成员保护的相关...对于初学者来说,深入理解这些概念对于编写高质量的C++程序至关重要。
在C++编程语言中,对象是面向对象编程(OOP)的核心概念,它封装了数据和操作这些数据的方法。...通过深入学习3.3章节的内容,开发者可以更好地理解如何在实际项目中利用对象的数据成员来实现各种功能。
通过深入理解和熟练运用C++的函数和类,开发者能够创建复杂、模块化的程序,同时保证代码的可读性和可扩展性。不断探索这些概念的高级特性和实践,将有助于提升编程技能,适应各种软件开发需求。
C++是一种高级编程语言,它在C语言的基础上引入了面向对象的编程概念,使得程序员能够构建更为复杂的软件系统。C++的关键特征包括类、对象、引用、函数...理解和掌握这些概念对于深入学习C++和开发复杂应用至关重要。