接口、抽象类

接口和抽象类
接口
1.定义
Java接口是一系列方法的声明,是一些方法特征的集合。一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。


2.特征
接口实现和类继承的规则不同:为了数据的安全,继承时一个类只有一个直接父类。但是一个类可以实现多个接口,等同于变相实现了类的多继承。


Java接口本身没有任何实现,只描述public行为。但是接口不是类,不能使用new 运算符实例化一个接口,但是声明接口变量是允许的。


Java接口的方法只能是抽象的和公开的,Java接口不能有构造器,Java接口可以有public、静态的和final属性。即接口中的属性可以定义为 public static final int value=5;


接口把方法的特征和方法的实现分割开来。这种分割体现在接口常常代表一个角色,它包装与该角色相关的操作和属性,而实现这个接口的类便是扮演这个角色的演员。


3.声明并实现


接口通过interface关键字来定义,使用implements关键字来实现。

   * 一个接口可以同时实现多个接口,中间用“,”隔开。
     
            * 接口可以作为一种类型声明变量,一个接口类型的变量可以引用实现了该接口的类的对象。此时调用的接口中的方法为类的方法的具体实现!
           
   * 接口可以继承接口,并且可以继承多个!


抽象类
1.定义

如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract(抽象)。“抽象方法”,属于一种不完整的方法,只含有一个声明,没有方法主体。
2.特征
   * 如果从一个抽象类继承,而且想生成新类型的一个对象,就必须为基础类中的所有抽象方法提供方法定义。
   
   *   即使不包括任何abstract 方法,亦可将一个类声明成“抽象类”。


   * 抽象类是对一系列看上去不同,但是本质上相同的具体概念的抽象。  
   
   * 即使不包括任何抽象方法,也可将一个类声明成“抽象类”。


     * 如果一个类包含一个或者多个抽象方法, 则该类必须限定为抽象的。


   * 抽象类不能被实例化。


   * 如果从一个抽象类继承, 必须对所有抽象方法进行覆盖 , 否则导出类也是抽象的。
   
   * 没有抽象方法的类可以声明称抽象类,但有抽象方法的类,一定是抽象类。


区别

一个类只能继承一个抽象类,但可以实现多个接口。

抽象类中可以包含抽象方法和非抽象方法,而接口中的所有方法均为抽象的。

子类继承抽象类必须实现抽象类中所有抽象方法,否则子类也必须是抽象类。而子类实现接口则必须实现接口中的所有抽象方法。


接口可以且只可以定义static final成员变量,抽象类可以定义普通变量。

接口是公开的,里面不能有私有的方法或变量,抽象类是可以有私有方法或私有变量的。


接口可以实现多重继承,而一个类只能继承一个父类。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值