【发布时间】:2016-11-23 19:19:50
【问题描述】:
我正在尝试弄清楚如何在基本抽象类中创建一个能够使用从该类派生的实例化对象的成员值的方法。例如,假设我有一个名为 Vehicle 的类,它继承了一个名为 IVehicle 的接口;
public abstract class Vehicle : IVehicle
{
public int Wheels = 4;
public int CountWheels()
{
return Wheels;
}
}
假设我有另一个名为Motorcycle 的类继承Vehicle;
public class Motorcycle : Vehicle, IVehicle
{
public int Wheels = 2;
}
如果我创建一个名为newMotorcycle 的新Motorcycle 并调用newMotorcycle.CountWheels(),我会得到4 而不是2。我假设这是Wheels 在Motorcycle 类中定义的问题,但我已经尝试了我能想到的所有方法来让它工作,它似乎总是想忽略子类定义。我知道我可以将CountWheels() 方法抽象化并在Motorcycle 类中定义它,但我试图使基本Vehicle 类尽可能通用,这样我就可以实现大量其他子类而无需不得不一遍又一遍地重新定义相同的方法。
我的第一个问题;我想要做的甚至可能吗?如果是这样,我的成员定义的哪一部分需要更改才能按我的预期方式工作?
我保证在我在这里发布之前我已经搜索了互联网,但我找不到足够的信息来帮助自己......
【问题讨论】:
-
为什么需要轮子和 countWheels?你可以例如在 Vehicle.countWheels 中返回 4 作为默认值,然后覆盖 Motorcycle.countWheels 并返回 2。然后移除车轮。只是一个例子......
-
@ElDuderino 有人可以推测这是一个 MCVE,而且他的真实代码不那么做作
标签: c# class inheritance abstract