http://www.crazycoder.cn/DotNet/Article10617.html
一般所说的继承,都是类之间的关系,在面向对象的思想里面,面向接口编程是重要一点,而这个面向接口编程中的接口,则是被很多人所误解。从字面上解释,就是必须所有的类都实现某一个接口。但是,这样就犯了教条主义了。在这里,先说一下接口和抽象类的区别。当然了,语法上的区别就有很多了,从设计上来说,接口定义的是行为,抽象类定义的是属性。个人理解,面向接口编程里面的接口,不是所谓的interface,而是面向既定的行为编程,而这个既定的行为,在与其他模块、系统交互的时候,我们可以将其称为协议。所以说,面向接口编程,说道理,就是针对某个协议、某个行为编程。
再说多态。多态的基础是虚函数,在Java里面,方法默认都是虚函数,所以说,Java里面方法的“穿透性”很强。
在.Net中,则加了override等关键字,来避免这样过强的穿透性。下面看一下所谓的穿透性是什么。
class Parent
{
public Parent(){
Print();
}
public void Print(){
System.out.println(\"Parent\");
}
}
class Child extends Parent
{
public Child(){
Print();
}
public void Print(){
System.out.println(\"Child\");
}
}
public class Test
{
public static void main(String[]args)
{
Child c=new Child();
}
}
上面这段代码,输出的最终结果是:Parent Child。在new Child()的时候,首先执行父类的构造方法,执行Print,然后再执行子类的Print。
继承和多态组合起来,可以应对很多动态变化的需求,如果再加上反射,那么基本上对于变化,就没有什么需要害怕的了。