Yum*_*275 4 c# oop inheritance
所以我正在努力教自己编程,我正在为练习制作一场RPG战斗.(基本上只是c#中一个非常简单的旧RPG战斗系统)但是,我对继承有点困惑.所以我有一个基类敌人:
class Enemy
{
public string name;
public int health;
public int attack;
public int level;
public Enemy(string _name, int _health, int _attack, int _level)
{
name = _name;
health = _health;
attack = _attack;
level = _level;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有这个课Dragon:
class Dragon : Enemy
{
}
Run Code Online (Sandbox Code Playgroud)
为什么这么说呢
没有给出的参数对应于'Enemy.Enemy(string,int,int,int)所需的形式参数'_name'?
我的想法是它会使用敌人的构造函数,我是否必须使每个派生类成为自己的构造函数?
你问题的基本答案是肯定的.派生类必须定义构造函数,特别是当基类上没有默认构造函数时,它们必须这样做.
这是因为在创建派生类时总是会触发基类构造函数(事实上,它们首先被触发).如果您没有构造函数来传递基类构造函数的必需参数,则编译器不知道如何处理它.
在你的情况下,像
public Dragon(string _name, int _health, int _attack, int _level)
:base(_name, _health, _attack, _level)
{
}
Run Code Online (Sandbox Code Playgroud)
会让你开始.当然,您可能需要(也可能有)其他参数Dragon.您还可以将文字传递给基础构造函数(因此您不需要Dragon使用所有基类参数对参数进行参数化).
public Dragon(string _name)
:base(_name, 1000, 500, 10)
{
}
Run Code Online (Sandbox Code Playgroud)
唯一的要求是使用现有的基类构造函数.