在父 class 中设置值并在派生 class 中访问它
Set the value in the parent class and access it in the derived class
这似乎是一个非常简单的例子,但我很困惑,我无法让它工作。
我正在尝试通过检查“1”从派生 class 中检索父 class“1”中设置的值,但它总是 returns else 语句“3 ”。如何从 derived class 中访问这个值?
.
欢迎任何有关如何纠正此问题的建议。
class Program
{
static void Main(string[] args)
{
Parent parent = new Parent();
Child child = new Child();
parent.SetA = 1;
double test = child.GetA();
Console.WriteLine(test);
}
}
class Parent
{
protected int A;
public int SetA
{
get { return A; }
set { A = value; }
}
}
class Child : Parent
{
public int GetA()
{
if (A == 1)
{
return 2;
}
else
{
return 3;
}
}
}
你有两个实例!
您必须在 Child
上调用 SetA
child.SetA = 1;
如前所述,您正在使用两个单独的对象,它们每个都有自己的 SetA 副本。
如果你想让他们分享它,你应该把它设为静态。然后,从父级派生的 class 的每个实例都将具有相同的值。
您在 parent
对象上设置了 A,而不是 Parent
class。 Child
继承了 Parent
的所有内容,这意味着您可以使用 child.SetA
来设置子项的值,因为 Child
有一个 SetA
方法。您正在尝试更改 class 中的默认值,而不是您所做的 class 实例上的值。
这似乎是一个非常简单的例子,但我很困惑,我无法让它工作。
我正在尝试通过检查“1”从派生 class 中检索父 class“1”中设置的值,但它总是 returns else 语句“3 ”。如何从 derived class 中访问这个值? . 欢迎任何有关如何纠正此问题的建议。
class Program
{
static void Main(string[] args)
{
Parent parent = new Parent();
Child child = new Child();
parent.SetA = 1;
double test = child.GetA();
Console.WriteLine(test);
}
}
class Parent
{
protected int A;
public int SetA
{
get { return A; }
set { A = value; }
}
}
class Child : Parent
{
public int GetA()
{
if (A == 1)
{
return 2;
}
else
{
return 3;
}
}
}
你有两个实例! 您必须在 Child
上调用 SetAchild.SetA = 1;
如前所述,您正在使用两个单独的对象,它们每个都有自己的 SetA 副本。
如果你想让他们分享它,你应该把它设为静态。然后,从父级派生的 class 的每个实例都将具有相同的值。
您在 parent
对象上设置了 A,而不是 Parent
class。 Child
继承了 Parent
的所有内容,这意味着您可以使用 child.SetA
来设置子项的值,因为 Child
有一个 SetA
方法。您正在尝试更改 class 中的默认值,而不是您所做的 class 实例上的值。