当某人这样编写代码时,他/她正在尝试遵循基本的OO设计原则,即-
编写接口程序,而不是具体实现
我已经在我的一篇博客文章中解释了这一原理。在该
Class Inheritance VS Interface Inheritance部分中查找。
总而言之,当您使用父类型的引用来引用子类型的实例时,您将获得很大的灵活性。例如,如果将来需要更改子类型的实现,则无需更改太多代码即可轻松实现。
考虑以下方法-
public void DoSomeStuff(Super s) { s.someMethod();}
并调用此方法-
DoSomeStuff(new Sub());
现在,如果您需要更改内部逻辑
someMethod,则可以通过声明的新子类型(
Super例如
NewSubType)并更改该实现内部的逻辑来轻松实现。这样,您将无需接触使用该方法的其他现有代码。您仍然可以
DoSomeStuff通过以下方式使用您的方法-
DoSomeStuff(new NewSubType());
如果您声明的参数为
DoSomeStuffof
Sub,那么您也必须更改其实现-
DoSomeStuff(NewSubType s) { s.someMethod();}
并且可能还会链接/冒泡到其他几个地方。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)