如果我们继承一个类,私有变量也会继承吗?
我知道" 是的,变量是继承的,但是不能通过类接口直接访问. "
我想知道的是我们如何从子类访问私有变量/方法
我想说的是私人成员也是继承的.但是如何在不对其进行保护的情况下访问它们.
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)
| 归档时间: |
|
| 查看次数: |
4643 次 |
| 最近记录: |