C# 类和继承(成员访回修饰符)

news2025/6/6 19:57:26

成员访回修饰符

本章之前的两节阐述了类的可访问性。对类的可访问性,只有两种修饰符:internal和public。
本节阐述成员的可访问性。类的可访问性描述了类的可见性;成员的可访问性描述了类成员的可
见性。

声明在类中的每个成员对系统的不同部分可见,这依赖于类声明中指派给它的访问修饰符。
你已经看到private成员仅对同一类的其他成员可见,而public成员对程序集外部的类也可见。
在这一节,我们将再次研究public和private访问级别,以及其他3个可访问性级别。
在研究成员访问性的细节之前,首先阐述一些通用内容。

在研究成员访问性的细节之前,首先阐述一些通用内容。

  • 所有显式声明在类声明中的成员都是互相可见的,无论它们的访问性如何。
  • 继承的成员不在类的声明中显式声明,所以,如你所见,继承的成员对派生类的成员可
    以是可见的,也可以是不可见的。
  • 以下是5个成员访问级别的名称。目前为止我们只介绍了public和private。
    • public
    • private
    • protected
    • internal
    • protected internal
  • 必须对每个成员指定成员访问级别。如果不指定某个成员的访问级别,它的喼式访问级
    别为private。
  • 成员的可访问性不能比它的类高。也就是说,如果一个类的可访问性限于它所在的程序
    集,那么类的成员在程序集的外部也不可见,无论它们的访问修饰符是什么,public也不
    例外。

访问成员的区域

类通过成员的访问修饰符指明了哪些成员可以被其他类访问。你已经了解了public和
private修饰符。下面的类中声明了5种访问级别的成员

public class MyClass{
    public  int Member1;
    private int Member2;

    protected int Member3;
    internal int Member4;
    protected internal int Member5;
}

另一个类(如类B)能否访问这些成员取决于该类的两个特征。

  • 类是否派生自MyClass类。

  • 类B是否和MyClass类在同一程序集。
    这两个特征划分出4个集合,如图8-15所示。与MyClass类相比,其他类可以是下面任意一种。

  • 在同一程序集且继承MyClass(右下)。

  • 在同一程序集但不继承MyClass(左下)。

  • 在不同的程序集且继承myClass(右上)。

  • 在不同的程序集且不继承myClass(左上)。
    这些特征用于定义5种访问级别,下一节将详细介绍这一点。

访问性的区域划分

公有成员的可访问性

public访问级别是限制最少的。所有的类,包括程序集内部的类和外部的类都可以自由地访
问成员。图8-16阐明了MyClass的public类成员的可访问性。
要声明一个公有成员,使用public访问修饰符,如:

public  int Member1;

公有类的公有成员对同一程序集或其他程序集的所有类可见

私有成员的可访问性

private访问级别是限制最严格的。

  • private类成员只能被它自己的类的成员访问。它不能被其他的类访问,包括继承它的类。
  • 然而,private成员能被嵌套在它的类中的类成员访问。
    图8-17阐明了私有成员的可访问性。

任何类的私有成员只对它自己的类〈或嵌套类)的成员可见

受保护成员的可访问性

protected访问级别如同private访问级别,但它允许派生自该类的类访问该成员。图8-18
阐明了受保护成员的可访问性。注意,即使程序集外部继承该类的类也能访问该成员。

公有类的受保护成员对它自己的类成员或派生类的成员可见。
派生类甚至可以在其他程序集中

内部成员的可访问性

标记为internal的成员对程序集内部的所有类可见,但对程序集外部的类不可见,如图8-19
所示。

内部成员对同一程序集内部的任何类成员可见,但对程序集外部的类不可见

受保护内部成员的可访问性

标记为protected internal的成员对所有继承该类的类以及程序集内部的所有类可见,如
图8-20所示。注意,允许访问的集合是protected修饰符允许访问的类的集合加上internal修
饰符允许访问的类的集合。注意,这是protected和internal的并集,不是交集。

公有类的受保护内部成员对相同程序集的类成员或继承该类的类成员可见。
它对其他程序集中不继承该类的类不可见

成员访问修饰符小结

下面两个表格概括了5种成员访问级别的特征。表词列出了修饰符,并直观地概括了它们
的作用。
成员访问修饰符
图8-21演示了5个成员访问修饰符的可访问级别。

各种成员访问修饰符的相对可访问性

表8-2在表的左边列出了访问修饰符,并在顶部划分出类的类别。派生指类继承声明该成员
的类。非派生指类不继承声明该成员的类。表格单元中对勾的意思是该类别的类可以访问带有相
应修饰符的成员。

成员可访问性总结

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2402052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux-文件管理及归档压缩

1.根下的目录作用说明: /:Linux系统中所有的文件都在根下/bin:(二进制命令目录)存放常用的用户命令/boot:系统启动时的引导文件(内核的引导配置文件,grub配置文件,内核配置文件) 例…

微软认证考试科目众多?该如何选择?

在云计算、人工智能、数据分析等技术快速发展的今天,微软认证(Microsoft Certification)已成为IT从业者、开发者、数据分析师提升竞争力的重要凭证。但面对众多考试科目,很多人不知道如何选择。本文将详细介绍微软认证的考试方向、…

Dify工作流实践—根据word需求文档编写测试用例到Excel中

前言 这篇文章依赖到的操作可查阅我之前的文章: dify里的大模型是怎么添加进来的:在Windows本地部署Dify详细操作 flask 框架app.route()函数的开发和调用:PythonWeb开发框架—Flask工程创建和app.route使用详解 结构化提示词的编写&…

【LC实战派】小智固件编译

这篇写给立创吴总,是节前答应他配合git代码的说明;也给所有对小智感兴趣的小伙伴。 请多提意见,让这份文档更有价值 - 第一当然是拉取源码 - git clone https://github.com/78/xiaozhi-esp32.git 完成后,先查看固件中实际的…

jdbcTemplate.query备忘录

jdbcTemplate.query中使用全部字符串和参数注入&#xff0c; 查询速度为什么差距这么大 如何正确使用JdbcTemplate参数化查询 1、使用?占位符 String sql "SELECT * FROM users WHERE name LIKE ?"; List<User> users jdbcTemplate.query(sql,new Object[…

如何搭建Z-Blog PHP版本:详细指南

Z-Blog是一款功能强大且易于使用的博客平台&#xff0c;支持PHP和ASP两种环境。本文将重点介绍如何在PHP环境下搭建Z-Blog博客系统&#xff0c;帮助您快速上线自己的个人博客站点。 准备工作 1. 获取Z-Blog PHP版本 首先&#xff0c;访问Z-Blog官方网站下载最新版本的Z-Blog…

Github Copilot新特性:Copilot Spaces-成为某个主题的专家

概述 当今的工程团队都会面临知识碎片化的问题。关键的上下文分散在代码、文档和团队成员的头脑中&#xff0c;这使得他们很难在一个新的领域快速上手并完成工作。Copilot Spaces 通过集中您的项目上下文解决了这个问题&#xff0c;因此 Copilot 可以根据您的工作提供更智能、…

攻防世界-XCTF-Web安全最佳刷题路线

每次写序都是最烦恼的&#xff0c;都不知道写什么&#xff0c;CTF是团队竞赛&#xff0c;有很多分支&#xff08;Web安全&#xff0c;密码学&#xff0c;杂项&#xff0c;Pwn&#xff0c;逆向&#xff0c;安卓&#xff09;&#xff0c;可以每个领域都涉猎&#xff0c;或许感觉那…

t021-高校物品捐赠管理系统【包含源码材料!!!!】

视频演示地址 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装高校物品捐赠管理系统软件来发挥其高效地信息…

设计模式——面向对象设计六大原则

摘要 本文详细介绍了设计模式中的六大基本原则&#xff0c;包括单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则和合成复用原则。每个原则都通过定义、理解、示例三个部分进行阐述&#xff0c;旨在帮助开发者提高代码的可维护性和灵活性。通过具体代码…

Python制作史莱姆桌面宠物!可爱的

史莱姆桌面宠物 一个可爱的桌面史莱姆宠物&#xff0c;它会在您的任务栏上移动并提供可视化设置界面。 这里写目录标题 史莱姆桌面宠物功能特点安装与运行直接运行方式创建可执行文件 使用说明自定义GIF说明打包说明开源地址 功能特点 可爱的史莱姆在任务栏上自动移动支持…

Dify源码教程:账户和密码传递分析

概述 Dify系统中账户创建过程中的密码处理是Web应用安全的重要环节。本教程详细分析了从前端表单到后端存储的完整流程&#xff0c;展示了Dify如何安全地处理用户凭据。 前端部分 在 dify/web/app/install/installForm.tsx 文件中&#xff0c;当用户填写完表单并点击安装按钮…

数据分析图表类型及其应用场景

说明&#xff1a;顶部HTML文件下载后可以直接查看&#xff0c;带有示图。 摘要 数据可视化作为现代数据分析的核心环节&#xff0c;旨在将复杂、抽象的数据转化为直观、易懂的图形形式。这种转化显著提升了业务决策能力&#xff0c;优化了销售与营销活动&#xff0c;开辟了新…

Github 2025-06-03Python开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2025-06-03统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目10Rust项目1HTML项目1C项目1 系统设计指南 创建周期&#xff1a;2507 天开发语言&#xff1a;Pyt…

电脑提示dll文件缺失怎么办 dll修复方法

当你在使用某些应用程序或启动电脑时&#xff0c;看到提示“DLL文件缺失”的错误信息&#xff0c;这通常意味着某个必要的动态链接库&#xff08;DLL&#xff09;文件无法被找到或加载&#xff0c;导致软件无法正常运行。本文将详细介绍如何排查和修复DLL文件缺失的问题&#x…

【自动思考记忆系统】demo (Java版)

背景&#xff1a;看了《人工智能》中的一段文章&#xff0c;于是有了想法。想从另一种观点&#xff08;⭕️&#xff09;出发&#xff0c;尝试编码&#xff0c;告别传统程序员一段代码解决一个问题的方式。下图是文章原文和我的思考涂鸦✍️&#xff0c;于是想写一个自动思考记…

51单片机基础部分——独立按键检测

前言 在单片机开发中&#xff0c;我们会经常对单片机的状态进行控制&#xff0c;比如我们会控制某个灯点亮&#xff0c;某个灯熄灭&#xff0c;这个时候我们就要开始做控制&#xff0c;我们可以通过什么控制呢&#xff0c;这个地方我们选择按键控制 按键实物及工作原理 生活…

【Docker管理工具】部署Docker可视化管理面板Dpanel

【Docker管理工具】部署Docker可视化管理面板Dpanel 一、Dpanel介绍1.1 DPanel 简介1.2 主要特点 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Dpanel镜像五、部署Dpanel…

springboot实现查询学生

文章目录 数据库前端 请求mybatis 数据库 前端 请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <a href"/list">启动学生管理…

Appium+python自动化(九)- 定位元素工具

简介 环境搭建好了&#xff0c;其他方面的知识也准备的差不多了&#xff0c;那么就开始下一步元素定位&#xff0c;元素定位主要介绍如何使用uiautomatorviewer&#xff0c;通过定位到页面上的元素&#xff0c;然后进行相应的点击等操作. 此外在介绍另一款工具&#xff1a;Insp…