min10

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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。

继承和多态组合起来,可以应对很多动态变化的需求,如果再加上反射,那么基本上对于变化,就没有什么需要害怕的了。

posted on 2008-12-29 16:12  min10  阅读(318)  评论(1编辑  收藏  举报