繁体   English   中英

为继承自抽象 class 的 class 创建构造函数

[英]Create constructor for class that inherits from abstract class

我有一个继承的抽象 class 。 从抽象 class 继承的 class 应该有一个扩展的构造函数。

我在互联网上找不到我要找的东西,因为我不知道该怎么说。

我的代码如下所示:

我的动物摘要 class

public abstract class Animal : PictureBox
{
    public string name { get; }
    public int age { get; }
    public bool gender { get; }
    public Image img { get;}

    protected Animal(string name, int age, bool gender)
    {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    public virtual void SayYourName()
    {
        Debug.WriteLine("My age is:", name);
    }

    public virtual void SayYourAge()
    {
        Debug.WriteLine("My age is:", age);
    }

    public virtual void SayYourGender()
    {
        if (gender == true)
        {
            Debug.WriteLine("My gender is Male");
        }
        else
        {
            Debug.WriteLine("My gender is Female");
        }
    }

    public virtual void eat()
    {
        Debug.WriteLine("I ate!");
    }

我的两栖动物摘要 Class

{
public abstract class Amphibian : Animal, ISwim, IWalk
{

    public void swim()
    {
        Debug.WriteLine("I swam!");
    }

    public void walk()
    {
        Debug.WriteLine("I walked!");
    }
}

我的青蛙摘要 class

public abstract class Frog : Amphibian
{
}

我的非洲牛蛙 class

public sealed class African_bullfrog : Frog 
{

    public African_bullfrog(string name, int age, bool gender) 
        : base(name, age, gender)
    {
        this.img = Zoo.Properties.Resources._01__African_Bullfrog;

    }

我的问题发生在最后一个代码部分

您从Animal继承的所有类都必须提供Animal所需的信息,因此您必须提供一个构造函数来获取这些信息并将它们传递给base构造函数。

public abstract class Amphibian : Animal, ISwim, IWalk
{
    public Amphibian(string name, int age, bool gender):base(name, age, gender)
    {   
    }
    // ...
}

public abstract class Frog : Amphibian
{
    public Frog(string name, int age, bool gender):base(name, age, gender)
    {
    }
}

public sealed class African_bullfrog : Frog
{
    public African_bullfrog(string name, int age, bool gender)
        : base(name, age, gender)
    {
        // ...
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM