A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 佐饵 中级黑马   /  2014-10-6 17:09  /  865 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1、抽象类(abstract class)和接口(interface)有什么异同?

   抽象类定义:声明方法的存在而不去实现它的类叫做抽象类(抽象类对某具体类型的部分实现------抽象类是对具体的抽象。)
   接口定义:接口是抽象类的变体(接口就是一些方法特征的集合------接口是对抽象的抽象)  
  
不同点:  
    1).抽象类可以有实现(包括构造函数),而接口不可以有任何实现,重要的是抽象类可以包括抽象方法
        这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。
        接口中所有方法都必须是未实现的,都是抽象的。
    2).抽象类中还以有成员变量(包含静态成员变量)、属性、常量和静态方法,并且他们可以是非公共的;
        而接口中不能有成员变量、常量、静态方法,只能有公共的属性。
    3).抽象类可以从另一个类或者一个/ 多个接口派生;而接口不能从另一个类派生却可以实现另一个或多个接口。
    4).一个.net 类只能从一个基类中派生即使这个基类是抽象类;然而一个.net 类可以实现多个接口。
      (但是如果从一个抽象类派生或者从一个/ 多个接口实现,则必须实现抽象类中抽象方法或接口中所有的方法)

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

抽象类和接口的使用:
      1)如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。
      2)如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。
      3)如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。   
      4)抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马