【发布时间】:2015-01-15 03:58:59
【问题描述】:
我对 OO 编程有点陌生,我正在尝试理解这种实践的所有方面:继承、多态性等,但是我的大脑不想完全理解一件事:接口。
我可以理解使用接口而不是类继承的好处(主要是因为一个类不能从多个父类继承),但我遇到了困难:
假设我有这样的事情:
/** a bunch of interfaces **/
public interface IMoveable
{
void MoveMethod();
}
public interface IKilleable()
{
void KillMethod();
}
public interface IRenderable()
{
void RenderMethod();
}
/** and the classes that implement them **/
public class ClassOne : IMoveable
{
public void MoveMethod() { ... }
}
public class ClassTwo: IMoveable, IKilleable
{
public void MoveMethod() { ... }
public void KillMethod() { ... }
}
public class ClassThree: IMoveable, IRenderable
{
public void MoveMethod() { ... }
public void RenderMethod() { ... }
}
public class ClassFour: IMoveable, IKilleable, IRenderable
{
public void MoveMethod() { ... }
public void KillMethod() { ... }
public void RenderMethod() { ... }
}
通过在这里使用接口,我必须每次在每个类中声明MoveMethod、KillMethod 和RenderMethod……这意味着复制我的代码。肯定有问题,因为我觉得这不是很实用。
那么我应该只在少数几个类上实现接口吗?或者我应该找到一种混合继承和接口的方法?
【问题讨论】:
-
可能最好的理解方法是编写单元测试,仅当您将标志传递给
FormatHardDrive(bool really)时,在格式化硬盘驱动器之前验证显示的对话框。实现这样的方法(不必实际销毁硬盘,但类似的东西)并尝试编写测试。 -
here 是我喜欢的一个很好的例子
-
@Jonesy 谢谢它真的很有帮助!
标签: c# class oop methods interface