C# 类和继承(屏蔽基类的成员)

article/2025/9/8 2:18:46

屏蔽基类的成员

虽然派生类不能删除它继承的任何成员,但可以用与基类成员名称相同的成员来屏蔽(mask)
基类成员。这是继承的主要功能之一,非常实用。

例如,我们要继承包含某个特殊方法的基类。该方法虽然适合声明它的类,但不一定适合派
生类。在这种情况下,我们希望在派生类中声明新成员以屏蔽基类中的方法。在派生类中屏蔽基
类成员的一些要点如下。

  • 要屏蔽一个继承的数据成员,需要声明一个新的相同类型的成员,并使用相同的名称。
  • 通过在派生类中声明新的带有相同签名的函数成员,可以屏蔽继承的函数成员。请记住,
    签名由名称和参数列表组成,不包括返回类型。
  • 要让编译器知道你在故意屏蔽继承的成员,可使用new修饰符。否则,程序可以成功编译,
    但编译器会警告你隐藏了一个继承的成员。
  • 也可以屏蔽静态成员

下面的代码声明了一个基类和一个派生类,它们都有一个名为Field1的string成员。使用
new关键字以显式地告诉编译器 屏蔽基类成员 。图8-4展示了每个类的实例。

class SomeClass   //基类
{public string Field1;...
}class OtherClass:SomeClass  //派生类
{new public string Field1;  //用同样的名称屏蔽基类成员
}

屏蔽基类成员

在下面的代码中,OtherClass派生自SomeClass,但隐藏了两个继承的成员。注意new修饰
符的使用。图8-5阐明了这段代码。

class SomeClass    //基类
{public string Field1="SomeClass Field1";public void Method1(string value){Console.WriteLine($"SomeClass.Method1:{value}");}
}class OtherClass:SomeClass   //派生类
{new public string Field1="OtherClass Field1";   //屏蔽基类成员new public void Method1(string value)           //屏蔽基类成员{Consoel.WriteLine($"OtherClass.Method1: {value}");}
}class Program
{OtherClass oc=new OtherClass();     //使用屏蔽成员oc.Method1(oc.Field1);              //使用屏蔽成员
}

隐藏基类的字段和方法


http://www.hkcw.cn/article/MrCcDWppRY.shtml

相关文章

C语言——数组

一、数组的概念 数组是一组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息: (1)数组中存放的是1个或者多个数据,但是数组元素个数不能为0。 (2)数组中存放的多个数据&#xff…

Flink

文章目录 Flink1.Flink简介2.为什么选择Flink2.1 传统数据处理架构2.2 大数据Lambda架构2.3 流处理架构2.4 Flink是理想的流计算框架2.5 Flink的优势 3.Flink应用场景3.1 事件驱动型应用3.2 数据分析应用3.3 数据流水线应用 4.Flink技术栈5.Flink体系架构 Flink 1.Flink简介 …

使用C# 快速删除Excel表格中的重复行数据-详解

目录 简介 使用工具 C# 删除Excel工作表中的重复行 C# 删除指定Excel单元格区域中的重复行 C# 基于特定列删除重复行 RemoveDuplicates 方法快速比较 简介 重复行是指在Excel表格中完全相同的多行数据。这些冗余行的存在可能源于多种原因,例如: …

OpenCv高阶(十九)——dlib关键点定位

文章目录 一、什么是人脸关键点定位?二、关键点模型的下载及关键信息的理解三、dlib关键点定位的简单实现(1)导入必要的库(2)从指定路径读取图像文件(3)创建dlib的正面人脸检测器对象&#xff0…

【Java】线程池的实现原理是怎样的?CPU密集型任务与IO密集型任务的区别?

一、CPU密集型与IO密集型任务 1.CPU密集型任务(CPU-bound) 定义:需要大量CPU计算资源,大部分时间都在进行运算的任务。 这类任务的特点是计算量大,CPU占用率高。 特点: 主要消耗CPU资源执行速度取决于CPU的计算能力通常涉及复…

【QT】理解QT的“元对象系统”

目录 前置知识: (1)C运行时多态 (2)RTTI QT的元对象系统 1.元对象系统基本内容 2.元对象代码 3.元对象系统其它特性 前置知识: (1)C运行时多态 C的运行时多态是由虚函数和继…

Windows Server 2019--10 网络地址转换

本章要点 了解 NAT 技术的核心原理。掌握 NAT 技术的应用。掌握 NAT 网关的配置。 IP 地址分为两类,分别是私有IP地址(Private IP)与公用IP地址(Public IP)。 位于内部网络中的计算机使用的是私有IP地址,其不需要向IP地址发放机构提出申请。私有IP地址…

掌握STP技术:网络环路终结者实战

实验目的 理解生成树协议(STP)的基本原理及其在网络中的作用。掌握STP的配置方法,包括根桥选举、端口状态转换等关键机制。通过实验验证STP如何防止网络环路并实现冗余路径的优化管理。 实验环境 设备:支持STP的交换机&#xf…

通义灵码2.5——基于MCP打造我的12306火车票智能查询小助手

前沿技术应用全景图 本项目作为通义灵码2.5的标杆实践案例,展现了AI辅助开发在复杂业务系统中的革命性突破。通过深度集成12306 MCP服务体系,我们构建了一个融合智能决策、环境感知和自主优化的新一代火车票查询系统。 #mermaid-svg-4D7QqwJjsQRdKVP7 {…

不可变集合类型转换异常

记录一个异常:class java.util.ImmutableCollections$ListN cannot be cast to class java.util.ArrayList (java.util.ImmutableCollections$ListN and java.util.ArrayList 文章目录 1、原因2、解决方式一3、解决方式二4、关于不可变集合的补充4.1 JDK8和9的对比4…

初学python的我开始Leetcode题10-1

提示:100道LeetCode热题10-1主要是回溯相关,包括四题:全排列、子集、电话号码的字母组合、组合总和。由于初学,所以我的代码部分仅供参考。 前言 下周是第十六周,然后是两周的期末周,所以马上会缺两周左右…

IPTV电视直播 1.6.0 | 手机电视直播 秒播无卡顿

电视直播是一款功能强大且用户体验优秀的电视直播软件。它提供了丰富的节目资源,并支持高清画质播放,无论是家庭娱乐、移动办公还是学习,都能满足用户的需求。该应用完全无广告、无弹窗,确保用户享受纯净的观看体验。此外&#xf…

BugKu Web渗透之备份是个好习惯

启动场景后,网页显示一段字符串。 看起来像md5值,但是又过长了。 步骤一:右键查看源代码,没有发现任何异常。 步骤二:使用dirsearch去查看是否有其他可疑文件。 在终端输入: dirsearch -u http://117.72.…

深入理解 SELinux:通过 Nginx 和 SSH 服务配置实践安全上下文与端口策略

目录 一、引言 二、实验环境说明 三、实验 1:Nginx 服务安全上下文配置 3.1 实验目标 3.2 操作步骤 1. 开启 SELinux 并重启系统 2. 安装 Nginx 并创建自定义目录 3. 配置 Nginx 指向自定义目录 4. 分析 SELinux 上下文冲突 5. 修改上下文为合法类型 6. 验…

Linux 开发工具

1.sudo白名单 我们如果要让普通用户有sudo的权限 我们就要登录root用户 在/etc/sudoers目录下 通过文本编辑器(我用的是vim) 将要添加的用户 直接添加进去 如下图光标行就是我添加的白名单用户 然后我们添加的这个ly_centos就有sudo的权限了 2.gcc…

React 第四十九节 Router中useNavigation的具体使用详解及注意事项

前言 useNavigation 是 React Router 中一个强大的钩子,用于获取当前页面导航的状态信息。 它可以帮助开发者根据导航状态优化用户体验,如显示加载指示器、防止重复提交等。 一、useNavigation核心用途 检测导航状态:判断当前是否正在进行…

从数据持久化到网络通信与OpenCV:Qt应用程序开发的深度探索与实战

文章目录 前言一、QSettings:轻量级数据持久化方案1.1 QSettings 主要特点1.2 QSettings 常用函数整理 二、数据库2.1 连接SQLite数据库2.2 建表2.3 增删改 三、网络编程3.1 网络分层3.2 IP地址3.3 端口号3.4 基于TCP的Socket通信3.4 相关接口3.4.1核心类3.4.2 通信…

【产品经理从0到1】自媒体端产品设计

后台的定义 “后台” 与“前台”都是相对独立的平台,前台是服务于互联网用户的平台 ,后台主要是支撑前台页面内容、数据及对前台业务情况的统计分析的系统; 后台与前台的区别 第1:使用用户不同 前台用户:互联网用户…

Ubuntu20.04操作系统ssh开启oot账户登录

文章目录 1 前提2 设置root密码3 允许ssh登录root账户3.1 编辑配置文件3.2 重启ssh服务 4 安全注意事项 1 前提 ssh可以使用普通用户正常登录。 2 设置root密码 打开终端,设置密码 sudo passwd root # 设置root密码3 允许ssh登录root账户 3.1 编辑配置文件 su…

四叉树实现四边形网格

import matplotlib.pyplot as plt import matplotlib.patches as patches import numpy as np # 四叉树节点 class QuadNode:def __init__(self, x, y, width, height, depth):self.x xself.y yself.width widthself.height heightself.depth depthself.children []self.…