黑马程序员——Java基础--接口和抽象类的区别

———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———

抽象类定义:声明方法的存在而不去实现它的类叫做抽象类(抽象类对某具体类型的部分实现------抽象类是对具体的抽象。)

接口定义:接口是抽象类的变体(接口就是一些方法特征的集合------接口是对抽象的抽象)    
不同点:  
    1).抽象类可以有实现(包括构造函数),而接口不可以有任何实现,重要的是抽象类可以包括抽象方法
        这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。
        接口中所有方法都必须是未实现的,都是抽象的。
    2).抽象类中还以有成员变量(包含静态成员变量)、属性、常量和静态方法,并且他们可以是非公共的;
        而接口中不能有成员变量、常量、静态方法,只能有公共的属性。
    3).抽象类可以从另一个类或者一个/ 多个接口派生;而接口不能从另一个类派生却可以实现另一个或多个接口。
    4).一个.net 类只能从一个基类中派生即使这个基类是抽象类;然而一个.net 类可以实现多个接口。
      (但是如果从一个抽象类派生或者从一个/ 多个接口实现,则必须实现抽象类中抽象方法或接口中所有的方法)
相同点:
         1)、都不能被实例化;
         2)、包含未实现的方法声明;
         3)、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);
抽象类和接口的使用:
      1)如果预计要创建组件的多个版本,则创建抽象类。抽象类提供简单的方法来控制组件版本。
      2)如果创建的功能将在大范围的全异对象间使用,则使用接口。如果要设计小而简练的功能块,则使用接口。
      3)如果要设计大的功能单元,则使用抽象类.如果要在组件的所有实现间提供通用的已实现功能,则使用抽象类。   
      4)抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值