假设我有2个实现相同接口的类:
public interface IDoSomething
{
void DoSomething();
}
public class Child1
{
private const int CONST1 = 0;
void IDoSomething.DoSomehting()
{ /*Do something the way a Child1 would*/ }
}
public class Child2
{
private const int CONST1 = 0;
void IDoSomething.DoSomehting()
{ /*Do something the way a Child2 would*/ }
}
我想知道的是,因为两个类都使用相同的常量(CONST1
),所以我应该创建一个类如下的新类:
public class Parent
{
private const int CONST1 = 0;
}
然后让Child1
和Child2
从该类继承,假设这个场景中的真实类更大(有多个常量和多个通过接口实现的函数)?
答案 0 :(得分:1)
继承 - 否。
继承是一个很好的选择:
- 您的继承层次结构表示“is-a”关系,而不是“has-a”关系。
- 您可以重用基类中的代码。
- ...
来源 - https://msdn.microsoft.com/en-us/library/27db6csx(v=vs.90).aspx
条件#1在你的情况下立即失败,因为你的子类“有一个”常数。
条件#2可能会让你想到Parent
,但是在决定继承时,记住#1应该仍然是优先事项。重用#2中的代码是指重用父类的行为,而不仅仅是字段。
我认为您帖子上的评论已经让您走上正轨。我会在这里巩固。
public interface IDoSomething {
void DoSomething();
}
public class Constants {
private Constants() {}
public const int CONST1 = 0;
}
public class Class1 : IDoSomething {
public void DoSomething() {
Console.Write(Constants.CONST1);
}
}