首页 文章

多态性故障C Sharp第2部分> . <

提问于
浏览
0

即时尝试使用此方法来制作我的角色,但我得到错误:不一致的可访问性:返回类型'consoleapplication1.Enemigo'比方法'consoleapplication1.poringbuilder.makeporing()'更少可访问它是我第一次得到此错误,我真的不知道该怎么做,我已经尝试了很多不同的方法,但我得到同样的错误plz help> . <namespace ConsoleApplication1 {public static class PoringBuilder {public static Enemigo MakePoring(){return new Enemigo(15,0,30, 15,虚假,虚假,“Poring”); }}

这是另一个类命名空间ConsoleApplication1 {class Enemigo:Personaje {public Enemigo(int Damage,int Defensa,int HP,int MP,bool Evade,bool Counter,string Nombre):base(Damage,Defensa,HP,MP,Evade,Counter ,Nombre){}}}

这是我所有类命名空间的父级ConsoleApplication1 {class Personaje {public int Damage; public int Defensa;

public int HP;

    public int MP;
    public bool Evade;
    public bool Counter;
    public string Nombre;
    //public Personaje() { }
    public Personaje(int Damage, int Defensa, int HP,int MP, bool Evade, bool Counter, string Nombre)
    {
        this.Damage = Damage;
        this.Defensa = Defensa;
        this.HP = HP;
        this.MP = MP;
        this.Evade = Evade;
        this.Counter = Counter;
        this.Nombre = Nombre;
    }
}

}

并且我在主程序上使用它,如List EnemigosNoob = new List(); EnemigosNoob.Add(PoringBuilder.MakePoring());

我希望我足够精确> . <

3 回答

  • 0

    既然你没有在Enemigo类中添加任何东西,我会选择工厂方法 . 子类化通常适用于您想要添加某些内容的行为 .

    public static class PoringBuilder
    {
        public static Enemigo MakePoring()
        {
            return new Enemigo(30, 10, 0, false, false, 15, "Poring");
        }
    }
    

    并称之为:

    EnemigosNoob.Add(PoringBuilder.MakePoring());
    
  • 0

    Poring()是您的默认构造函数 . 你需要用至少一个无用的身体来声明它:

    public Poring()
    {
    }
    

    如果需要,您可以在正文中执行默认初始化,但最好通过按照Anon的答案链接到另一个构造函数来处理 . 但是,在任何一种情况下,你必须使用这两个括号 { } 来形成一个主体 .

  • 0
    public Poring() : this(/*your default values here*/) {}
    

    另外,对于你的其他构造函数...为什么要覆盖传入的值?

相关问题