接口 与 抽象类

 

 接口 VS 抽象类

  A. 相似之处

    1、不能实例化;
    2、包含未实现的方法声明;
    3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);

      4、在接口中增加一个成员,在抽象类中增加一个抽象方法,所有的继承了接口/抽象类的子类都必须实现这个成员/抽象方法;

    5、抽象类A可以继承抽象类B,接口C可以继承接口D。

           6、都可继承多个接口

  B. 不同之处

    1、接口定义类的公共行为,抽象类定义类的公共实现
    2、一个类只能继承自一个类(抽象类),但是可以同时实现多个接口;抽象类一般用于实现单继承,接口一般用于实现多继承;

    3、抽象类中可以包含的成员类型,只有方法、属性、索引器、事件可以被接口所包含;

    4、可以为抽象类中的成员添加“访问修饰符”,接口中的成员不能;
    5、接口中不能有实现,抽象类中可以有未实现成员也可以有实现的成员;

    6、接口中未实现的成员必须在子类中实现,抽象类中未实现的方法必须在子类中重写;

    7、如果在接口中增加一个成员,所有实现这个接口的类都必须实现这一成员,如果有很多个类继承了这个接口,就会增大工作量。如果在抽象类中增加一个可供子类继承,且不需要在子类中重写的东西(如,一个属性、一个函数),那么它所有的派生类都可以直接使用这个东西。

    8、抽象类A可以继承抽象类B,接口不能继承类,更不要说抽象类了。

    9、 接口可以继承多个接口,多重继承;而一个抽象类只能继承一个父类,且这个父类必须是抽象类。

 

 

posted @ 2015-05-12 19:21  苏打兴  阅读(162)  评论(0编辑  收藏  举报