我的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
.
实现一个空构造函数
我在我的 '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
.