gpt4 book ai didi

c# - 如何访问附加到派生类的值?

转载 作者:太空宇宙 更新时间:2023-11-03 19:17:00 24 4
gpt4 key购买 nike

我有一个名为 Animal 的类。对于任何给定的动物 aa.number_of_legs 应该是 4。

我有一个名为 Human 的类,它继承自 Animal。对于任何给定的人类 hh.number_of_legs 应该是 2。

如何设置 number_of_legs 属性?


这是我目前所拥有的:

 class Animal {
int number_of_legs = 4;
}

class Human : Animal {
int number_of_legs = 2;
}

但是如果我随便拿一些动物问它有几条腿,答案总是 2:

 Animal x = new Animal();
Animal y = new Human();
x.number_of_legs // --> 4
y.number_of_legs // --> 4

我知道这个新的 Human 被视为 Animal 因为变量 y 存储了 Animal .

如何设置 number_of_legs 属性,使 x.number_of_legs 为 4 而 y.number_of_legs 为 2?

最佳答案

首先,您应该使用实际的 C# properties对于这样的可公开访问的值,而不是公共(public)字段。

标记属性virtual在基类中,以便它可以在派生类中被覆盖。

public class Animal {

// By default, Animals will have 4 legs.
public virtual int NumberOfLegs { get { return 4; } }
}

然后 override它在派生类中提供不同的实现。

public class Human : Animal {

// But humans have 2 legs.
public override int NumberOfLegs { get { return 2; } }
}

关于c# - 如何访问附加到派生类的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15651307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com