[英]Inheritance issue C#
在我的应用程序中,继承存在一个小问题。 我有一个基类Client,它有一个Job子类。 基本上,我正在尝试为Job创建一个构造函数,但是却收到一条错误消息:“'Job_Manager_Application.Client'不包含采用0个参数的构造函数”
不知道为什么要这么做吗?
提前致谢。
您的Client类具有一个接受参数的构造函数。
因此,您的Job构造函数需要将参数传递给Client。
例:
class Client{
public string Name {get;set;}
public Client(string name){
this.Name = name;
}
}
-
class Job:Client{
public double Rate {get;set;}
public Job(double rate){
// This won't compile, because Client won't have its "name" parameter.
}
public Job(string name, double rate) : base(name){
// So you need to pass a parameter from your Job constructor using "base" keyword.
this.Rate = rate;
}
public Job(double rate) : base("Default Name"){
// You could do this, this is legal.
}
}
为什么Job
是Client
的子类? 继承表示一种关系( Cat
是 Animal
所以class Cat : Animal { }
)。 Job
不是 Client
。
无论如何,您的错误信息是明确的。 您在Client
上没有可访问的无参数构造函数。 然后,您需要从Job
上的构造函数显式调用客户端上的构造函数。
class Client {
public string Name { get; set; }
public Client(string name) { this.Name = name; }
}
class Job : Client {
public Job(string name) : base(name) { }
}
在那里看到那个base(name)
吗? 那是在Client
上调用基本构造函数Client.Client(string)
。 如果未明确指定基本构造函数,则编译器将尝试查找可访问的无参数构造函数。 如果没有,则会收到您遇到的编译时错误。
因此,您要么需要做上面做的事情,即显式调用可访问的非无参数构造函数,要么向Client
添加无参数构造函数。
但是,请重新考虑您的模型。 Job
不是Client
。
客户端有一个接受参数的构造函数,您没有正确调用它
public class Job
{
public Job(int num) { }
}
public class Client : Job
{
public Client() : base(1) {}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.