【发布时间】:2017-03-06 07:10:51
【问题描述】:
假设在我的假设软件的第一个版本中,我有一个像这样的简单类:
public Class Version1
{
public void Method1()
{
Console.WriteLine("Hello");
}
}
在第二个版本中,我有一个升级,需要像这样修改方法 1:
public Class Version1
{
public void Method1()
{
Console.WriteLine("Hello");
Console.WriteLine("World");
}
}
在第三个版本中,我有一个升级,需要向此类添加另一个方法,如下所示:
public Class Version1
{
public void Method1()
{
Console.WriteLine("Hello");
Console.WriteLine("World");
}
public int Method2()
{
return 7;
}
}
现在,根据我对开闭原则的理解,在两次升级中,我都违反了这一原则,因为我修改了在我的软件的第一个版本中执行所需工作的类。
我认为应该这样做,但不确定是否正确的方式是这样的:
public virtual Class Version1
{
public virtual void Method1()
{
Console.WriteLine("Hello");
}
}
public virtual Class Version2 : Version1
{
public override void Method1()
{
Console.WriteLine("Hello");
Console.WriteLine("World");
}
}
public Class Version3 : Version2
{
public int Method2()
{
return 7;
}
}
这是多么错误/正确?
【问题讨论】:
标签: c# inheritance polymorphism open-closed-principle