java之旅 (六)接口

interface关键词进一步强化了abstract的概念。你可以把它想成“纯的”abstract类。它能让开发人员定义类的形式:方法名,参数列表,返回值的类型,但是却没有方法的正文。interface也可以包括数据成员,但是它天生就是staticfinal的。interface只提供形式,不谈实现。

 

要创建一个实现了某个(或者某组)interface的类,就必须使用implements关键词。它的意思是,“interface要告诉你‘类长什么样子’,implements要告诉你‘它是怎么工作的’”

 

你可以把interface里的方法声明成public的,但是即便不讲,它们也是public的(这是自动的)。所以当你implements一个interface的时候,你必须把这个interface的方法定义成public的。(除非你有特殊的用途要定义成其他的)

 

java的“多重继承”:

java并不强制你一定要去继承abstract还是“具体”的类,但是你只能继承一个非interface的类。但是你可以根据据需要实现任意多个interface,这样你就能创建一个类似c++中“多重继承”的类。

 

接口的真正目的:能够上传到多个基本类型。接口的令一个作用是和“把abstact类用作基类”完全相同的:就是要禁止客户程序员去创建这个类的对象,并且重申这是一个接口。

 

到底是用interface还是abstract类?

interface既给了你abstract类的好处,又给了你interface的好处,因此只要基类的设计里面可以不包括方法和成员变量的定义,你就应该优先使用interface

 

接口继承:

通常情况下,extends只能用于类,但是由于一个interface可以由多个接口拼接而成,因此创建新的一个interface的时候可以使用extends来表示其多个“基接口”。

//

interface Monster 
   
   
{
   
   
  void menace();
   
   
}
   
   

  
  
   
    
  
  
interface DangerousMonster extends Monster 
   
   
{
   
   
  void destroy();
   
   
}
   
   

  
  
   
    
  
  
interface Lethal
   
   
{
   
   
  void kill();
   
   
}
   
   

  
  
   
    
  
  
interface Vampire extends DangerousMonster, Lethal
   
   
{
   
   
  void drinkBlood();
   
   
}
   
   

  
  
   
    
  
  

///

 

常量的分组:由于interface数据成员自动就是staticfinal  的,因此interface是一种非常方便的,创建一组常量值的工具,这点同cc++里的enum很类似。例如:

///

public interface Months

{

  int

    JANUARY = 1, FEBRUARY = 2, MARCH = 3,

    APRIL = 4, MAY = 5, JUNE = 6, JULY = 7,

    AUGUST = 8, SEPTEMBER = 9, OCTOBER = 10,

    NOVEMBER = 11, DECEMBER = 12;

}

为了安全期间可以把上面封到一个包里,不过最终你得到的只是一个int,看起来还是不如enum安全。不过抛开interface,我们可以创建一个final类,定义上一些static final的对象就没问题了。

提示:1There’s also a month field in java.util.Calendar.

2ApacheJakarta Commons项目下包含了一些创建枚举类型的工具,参见http://jakarta.apache.org/commons,下面的 “lang,”org.apache.commons.lang.enum.这个包里。 这个项目里面还有一些别的有用的类库。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值