有没有办法从基类调用overriden方法?
class SpaceObject {
public draw() {}
}
class Sun : SpaceObject{
public draw() {}
}
Sun planet1 = new Sun();
SpaceObject planet2 = new SpaceObject();
SpaceObject planet3 = new SpaceObject();
List<SpaceObject> objs = new List<SpaceObject>();
objs.Add(planet1);
objs.Add(planet2);
objs.Add(planet3);
foreach(SpaceObject o in objs)
o.draw();
Run Code Online (Sandbox Code Playgroud)
是否有一种方法可以在foreach中为planet1 Sun::Draw()而不是SpaceObject::Draw()?
现在我就是这样的
foreach(SpaceObject o in objs)
if(o.GetType() == typeof(Sun) ((Sun)o).draw();
else o.draw();
Run Code Online (Sandbox Code Playgroud)
但我计划有多重遗产,SpaceObject所以这不是一个好方法.
制作SpaceObject.Draw()方法virtual,这样你就可以给出Sun一个override Draw()方法.有关详细信息,您可能需要查看Microsoft页面上的此链接以了解有关继承主题的更多信息.