Interface

说明:
接口的定义:

(1)接口中的成员变量都是 public 、static 、final 的常量。
   在接口定义属性时,不管是否使用了 public static final 修饰符,其结果都是一样的,因为系统会自动增加这些修饰符。

(也就是说,public、static、final 都可以省略)

 

(2)接口中的方法都是 public 、abstract 的方法,仅有方法声明,没有方法体。接口中也可以没有任何方法。在接口定义方法时,不管是否使用了 public abstract 修饰符,其效果是一样的,系统会自动加上这些修饰符

 (也就是说,接口定义方法时 public、abstract 都可以省略;注意:但必须有返回类型!无论是否在接口中,所有的方法都必须有返回类型!!!)。

 

接口的使用:

【3】接口不能用于创建实例,但可以用于声明引用类型的变量。当使用接口声明引用类型的变量时,这个引用类型的变量必须引用到其实现类的对象。

(4)实现接口与继承父类类似,一样可以获得所实现接口里的常量属性、抽象方法、内部类和枚举类定义,同时也可以加入新的成员以满足实际问题的需要。

 

接口的继承:

(5)接口的继承:和类继承相似,子接口继承某个父接口,将会获得父接口里定义的所有常量属性、抽象方法、内部类和枚举类定义。与类不同的是,一个接口可以继承多个接口,继承它们的所有属性。显然,接口不能扩展类。

 

   看下面的例子:interface A extends B{...}
   这条语句表示定义了接口 A 并继承了接口 B ,使 A 成为 B 的子接口,并且 A 具有 B 的所有属性。接口继承过程中可能会出现以下情况:


   <1>方法重名:
    (1)如果两个方法完全一样,只只保留一个。
    (2)如果两个方法有不同的参数,那么子接口中包括两个方法,方法被重载。
    (3)如果两个方法仅在返回值上不同,程序会出现错误。


   <2>常量重名:
【1】两个重名常量全部保留,并使用原来的接口名作为前缀。

 

接口和抽象类的共同特征:
(1)接口和抽象类都不能被实例化,用于被其他类实现和继承。
【2】接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须全部实现这些抽象方法。

 

接口和抽象类的区别:
(1)抽象类既可以有实例变量,也可以有静态常量,而接口中不能有实例变量,而只能是静态(static)的常量(final)。
(2)抽象类中可以有非抽象方法,而接口中只能有抽象方法。
(3)抽象类只支持单继承,接口支持多继承。
【4】抽象类可以定义静态方法,而接口里不能定义静态方法。
(5)接口不包含构造方法;抽象类里可以包含构造方法,但并不是用于创建对象,而是让其子类调用这些构造方法来完成属于抽象类的初始化操作。
(6)接口里不能包含初始化块;而抽象类完全可以包含初始化块。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值