C#屏蔽基类成员

可以用与积累成员名称相同的成员来屏蔽

要让编译器知道你在故意屏蔽继承的成员,可以用new修饰符。否则程序可以成功编译,但是编译器会警告你隐藏了一个继承的成员

cs 复制代码
using System;

class someClass
{
    public string F1 = "Someclass F1";
    public void M1(string f)
    {
        Console.WriteLine($"someclass M1:{f}");
    }
}
class otherClass:someClass
{
    public string F1 = "otherClass F1";
    public void M1(string f)
    {
        Console.WriteLine($"otherClass M1:{f}");
    }
}
public class Program
{
    public static void Main(string[] args)
    {
        otherClass o = new otherClass();
        o.M1(o.F1);
    }
}

使用new:

cs 复制代码
using System;

class someClass
{
    public string F1 = "Someclass F1";
    public void M1(string f)
    {
        Console.WriteLine($"someclass M1:{f}");
    }
}
class otherClass:someClass
{
    new public string F1 = "otherClass F1";
    new public void M1(string f)
    {
        Console.WriteLine($"otherClass M1:{f}");
    }
}
public class Program
{
    public static void Main(string[] args)
    {
        otherClass o = new otherClass();
        o.M1(o.F1);
    }
}

结果:

cs 复制代码
otherClass M1:otherClass F1
相关推荐
钢铁男儿15 分钟前
Python 文本和字节序列(处理文本文件)
开发语言·python
加点油。。。。1 小时前
Matlab绘图(三)——设置图例的位置
开发语言·matlab·绘图
硬匠的博客1 小时前
C/C++指针
c语言·开发语言·c++
向日葵.1 小时前
CMake学习
开发语言·c++·学习
zru_96022 小时前
Java Stream流之GroupBy的用法
java·开发语言
rqtz2 小时前
【C++面向对象】封装(下):探索C++运算符重载设计精髓
开发语言·c++·运算符重载
jerry2011082 小时前
R语言之环境清理
开发语言·r语言
Tanecious.2 小时前
机器视觉--Python补充知识
android·开发语言·python
難釋懷2 小时前
bash的特性-命令和文件自动补全
开发语言·bash
胡斌附体2 小时前
qt designer 创建窗体选择哪种屏幕大小
开发语言·qt