我决定通过编写一个基于文本的 RPG 游戏来尝试记住几年前我在面向对象编程课上学到的东西。我不确定我是否希望完成这项工作,我也不太在乎。我只是想重新学习如何编写程序。
在记住函数、数据类型和类如何在 C++ 中工作的基础知识后,我编写了以下代码。
class Character
{
string Name;
public:
Character()
{
Name = "Charname";
}
string GetName(){return Name;}
void SetName(string sName){Name=sName;}
};
现在我希望我的角色有种族。第一个想法是创建 Character 类的子类,每个允许的种族都有一个。在我看来,这就像面向对象编程中要做的事情。但我开始思考它是如何工作的。我希望能够说出诸如“如果汤姆是人类,克拉拉是兽人,并且汤姆和克拉拉试图结婚,则给出错误信息”之类的话。我可能还希望人类和兽人有不同的方法来做不同的事情。
在我看来,从广义上讲,在前者中,我想将 Race 视为 Character 的成员(我将其理解为属性),而在前者中,就像它是子类一样。
如果 Human 是 Character 的子类,前者甚至可以做到吗?也就是说,一个对象能知道它属于哪个类吗?
我应该怎么做,为什么?