我有三个类别A、B和C。
class A
{
protected string name="demo";
}
class B: A
{}
class C: A
{}
我想在父类A中将name的值设置为"demo1",仅用于子类C,而不用于B。
我怎样才能做到这一点?
您可以向A
添加一个构造函数,该构造函数允许您设置值:
class A
{
private string name="demo";
public A() {}
public A(string name)
{
this.name = name;
}
}
class B: A
{}
class C: A
{
public C() : base("demo1")
{
}
}
因为在您的代码中,A有一个私有字段,没有其他类可以看到或修改它。
如果使字段受保护,这意味着它对自身和派生自它的类可见,但从类外部看不到。
class A
{
protected string name="demo";
}
class B: A
{}
class C: A
{
C()
{
name = "ClassC";
}
}
是否可以让它们都实现同一个接口,并让类C从类A继承,而类B只实现接口。这一切都有点模糊,很难说出最好的方法。
使用继承,最简单的解决方案是将指定的变量放在另一个从A继承的类中,并且只由C继承(而B仍然直接从A继承(。
class A
{}
class B: D
{}
class C: A
{}
class D: A
{
protected string name="demo";
}
class A
{
protected virtual string name="demo";
}
class B: A
{}
class C: A
{
protected override string name="demo1";
}