如果我们继承一个类,私有变量也会继承吗?

Sud*_*ain 0 c# oop

如果我们继承一个类,私有变量也会继承吗?

我知道" 是的,变量是继承的,但是不能通过类接口直接访问. "

我想知道的是我们如何从子类访问私有变量/方法

我想说的是私人成员也是继承的.但是如何在不对其进行保护的情况下访问它们.

Kon*_*lph 10

我知道"是的,变量是继承的,但是不能通过类接口直接访问."

所以你知道答案.

我想知道的是我们如何从子类访问私有变量/方法

你不能,这就是他们private(而不是说protected)的原因.制作它们的整个目的private是让你无法从任何地方访问它们,特别是包括子类.

明确地破坏这种封装几乎总是设计破坏的标志,不应该成为正常代码流的一部分.不过,也有要在其中道理的情况有关的一些代码,并在这些情况下,可能有必要审视甚至私人值.反射库允许这样做.以下是使用这些System.Reflection功能的简单示例:

class Widget {
    private readonly string identifier;

    public Widget(string identifier) {
        this.identifier = identifier;
    }
}

class MainClass {
    public static void Main(string[] args) {
        var widget = new Widget("my_test_widget");

        var type = widget.GetType();
        var field = type.GetField("identifier",
                                  System.Reflection.BindingFlags.Instance |
                                  System.Reflection.BindingFlags.NonPublic);

        Console.WriteLine($"{field} = {field.GetValue(widget)}");
    }
}
Run Code Online (Sandbox Code Playgroud)


Ste*_*eve 5

让他们受到保护.对于变量,请创建子类然后使用的受保护属性.