我有一个叫做的课Animal.对于任何给定的动物a,a.number_of_legs应该是4.
我有一个叫做Human继承自的类Animal.对于任何给定的人h,h.number_of_legs应该是2.
我该如何设置number_of_legs房产?
这是我到目前为止所拥有的:
class Animal {
int number_of_legs = 4;
}
class Human : Animal {
int number_of_legs = 2;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我采取一些任意动物,并询问它有多少腿,答案总是2:
Animal x = new Animal();
Animal y = new Human();
x.number_of_legs // --> 4
y.number_of_legs // --> 4
Run Code Online (Sandbox Code Playgroud)
我知道这个新Human的被视为一个Animal因为变量y存储了一个Animal.
如何设置number_of_legs属性,使其x.number_of_legs为4且y.number_of_legs为2?
首先,您应该将实际C#属性用于此类可公开访问的值,而不是公共字段.
标记virtual基类中的属性,以便可以在派生类中重写它.
public class Animal {
// By default, Animals will have 4 legs.
public virtual int NumberOfLegs { get { return 4; } }
}
Run Code Online (Sandbox Code Playgroud)
然后override它在派生类中提供不同的实现.
public class Human : Animal {
// But humans have 2 legs.
public override int NumberOfLegs { get { return 2; } }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |