所以这是我的班级,我刚刚学到了一些关于继承的知识。我听说过重写方法,但在这种情况下我该怎么做?
class Game
{
string consoleName;
int gameID;
public Game(string name, int id)
{
this.consoleName = name;
this.gameID = id;
}
public string displayGame()
{
return consoleName + " is the console I am playing";
}
这是我的孩子班。
class RolePlayingGame : Game
{
int level;
public RolePlayingGame(string name, int id, int lv) : base(string name, int id)
{
this.level = lv;
}
// override method for displaying. meant to display what the game class displayed and "I am level " + level
}
答案 0 :(得分:3)
您需要先更改基类:
class Game
{
...
public virtual string displayGame()
{
return consoleName + " is the console I am playing";
}
}
在您继承的类(子类)中,
class RolePlayingGame : Game
{
...
public override string displayGame()
{
...
base.displayGame(); // If you need to call the base class.
...
}
}
答案 1 :(得分:2)
将displayGame()
课程中的Game
更改为虚拟。
在RolePlayingGame
中覆盖如下:
public override string displayGame() {
return base.displayGame() + " - I am level " + level;
}
答案 2 :(得分:1)
您需要做两件事。在class Game
中,您必须将方法声明为虚拟。
public virtual string DisplayGame(){ ... }
然后在class RolePlayingGame
中,您必须声明您正在覆盖方法override
。 (您也可以使用new
隐藏方法。)
public override string DisplayGame(){ ... }
以下是有关覆盖与隐藏MSDN
的更多信息答案 3 :(得分:1)
public virtual string displayGame() { ... }
public override string displayGame() { return String.Format("Game {0}, Level {1}", this.name, this.level); }
顺便说一句,你需要一个成员“字符串名称”来存储游戏类游戏的名称。
您可以参考:http://msdn.microsoft.com/en-us/library/vstudio/9fkccyh4.aspx。你可以遵循一些好的和简单的例子。