我想说这个例子:
class A : SomeAbstractClassWithProperties
{
public A(string id, int size)
{
this.Name = "Name1";
this.Something = new SomethingElse(id, size);
}
//...some stuff
}
class B : A
{
public B(string id, int size)
{
this.Name = "Name2";
this.Something = new SomethingElse(id, size);
}
}
好的,这不会起作用:
Inconsistent accessibility: base class A is less accessible than class 'B'
'A' does not contain a constructor that takes 0 arguments
但是我们看到 A类和 B类的构造函数几乎相同。只是 this.Name 是不同的。我怎么能重写 B类?有什么建议?谢谢
答案 0 :(得分:3)
请更新您的代码
class B : A
{
public class B(string id, int size) : base(id, size)
{
this.Name = "Name2";
}
}
案例是你B构造函数试图调用一个不存在的A()默认构造函数。
答案 1 :(得分:0)
您应该将默认(不带参数)构造函数添加到类A或修改类B的构造函数,如此
public class B(string id, int size) : base(id, size)
{
this.Name = "Name2";
this.Something = new SomethingElse(id, size);
}
答案 2 :(得分:0)
当你创建B的实例时,由于B从A扩展,你也可以调用A的构造函数。 由于您要为A类定义构造函数,因此您不再具有默认的无参数构造函数,因此您必须在B构造函数中调用A的构造函数来传递所需的参数。
public A(string id,int size):base(param1,param2...paramX)