我的c#派生class可以继承基class的属性和函数,但是抛出异常

My c# derived class can inherit the base class properties and functions, but throws an exception

我在我的 'main' 方法中创建了一个对象 'spot' 我的基础 class 动物有 4 个属性,一个 'Animal' class 构造函数和一个函数 'SaySomething'。我的对象'spot'将他的参数传递给class构造函数'Animal'进行初始化。此外,我创建了一个继承基础 class 'Animal' 属性和方法的派生 class 'Dog',并且我在我的文件中创建了一个对象 'grover' 'main' 方法,当我尝试使用我的 'grover' 对象访问继承的方法 'SaySomething' 时,我的程序抛出异常:'ConsoleApplication1.Animal' 不包含采用0 个参数,当我尝试 运行 程序时。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Animal
    {
        public double height { get; set; }
        public double weight { get; set; }
        public string sound { get; set; }
        public string name { get; set; }

        public Animal(double height, double weight, string name, string sound)
        {
            this.height = height;
            this.weight = weight;
            this.name = name;
            this.sound = sound;
        }
        public void SaySomething()
        {
             Console.WriteLine("{0} is {1} inches tall, weighs {2} lbs and likes to say {3}", name, height, weight, sound);
        }

    }

    class Dog : Animal
    {

    }

    class Program
    {
        static void Main(string[] args)
        {
            Animal spot = new Animal(16,10,"spot","woof");
            Dog grover = new Dog();
            grover.SaySomething();
        }
    }
}

我知道我需要删除我的 class 构造函数并发现程序可以 运行 的对象参数和参数。但是这段代码有什么问题呢?为什么我的程序不能 运行?我需要选择不同的初始化方式还是可以改进此代码以使其正常工作?

因为您没有为 Dog 提供任何构造函数,它会自动创建一个 "empty" 构造函数,它还会尝试调用 Animal "empty" 构造函数。您需要为 Dog 实现一个构造函数,或者为 Animal.

实现一个空构造函数