首页 > 解决方案 > 类继承不适用于子类?

问题描述

    namespace Littler_story 
    {
        class Profession
         {
            public int Strength
             { public get; public set { if ((Strength + value) > Strength) { 
             Strength = value; } } }
            public int Intelligence
             { public get; public set { if ((Intelligence + value) > 
             Intelligence) { Intelligence = value; } } }
            public int Agility
             { public get; public set { if ((Agility + value) > Strength) { 
             Strength = value; } } }
            public int Charisma
             { public get; public set { if ((Charisma + value) > Charisma) { 
             Charisma = value; } } }
            public int Health
             { public get; public set { if ((Health + value) <= 0) { 
             Console.WriteLine("Game over!"); } } }
    }
        class FireFighter : Profession
        {
            Strength = 5;
            Intelligence = 2;
            Agility = 3;
            Charisma = 3;
            Health = 100;
        }

我在 Firefighter 类中的所有属性都出现错误。我最初将所有变量定义为每个类中的局部变量。我最近学习了继承,因为我的所有五个专业类都具有相同的属性,我想我可以为它们创建一个超类。如您所见,它们是在 Professional 中定义的,但是将它们放在我的一个类(消防员)中会导致错误。如果我实现它,一个错误可能会跨越我的所有类。我猜这可能是我在 Profession 类中创建自动属性的方式?我得到的错误是,这些属性力量、敏捷、耐力等在当前上下文中不存在。

标签: c#inheritance

解决方案


你不能那样设置属性。您需要在构造函数中访问它们,或者通过实例化类然后设置继承的属性。

所以这样做的一种方法是:

FireFighter f = new FireFighter ();
f.Strength = 5;

或在构造方法中:

public class FireFighter : Profession
 {
  public FireFighter()
  {
    Strength = 5;
  }
 }

推荐阅读