避免interfaces中的函数发生冲突。

interface Golfer{
    public static final int HighScore = 90;

   public static final int LowScore = 72;

   public int computeScore();

}

interface Bowler{

    public static final int  HighScore = 300;

    public static final int LowScore = 120;

    public void computeScore();

}

现在class不可能同时实现二者。尽管两个interface的computerScore()具有的签名式(signature),返回类别却不相同,因此会产生编译错误。

签名式 - 包括航数名和参数。但并不包括返回类型。

现在让两个interface的返回类型也一样,那么用一个class去继承这两个interface就没有问题了。

interface Golfer{

  public static final int HighScore = 90;

  public static final int LowScore = 72;

 public void computeScore();

}

class Enthusiast implement Golfer,Bowler{

  public void computeScore(){

     //现在没有问题。

  }

}

现在你发现两个interface申明的常量也一样。这个可以解决

int golflowscore = Golfer.LowScore;//通过限定名来拿常量

但是computeScore计算的是那个的分数呢? 假如这个函数是个通用的函数那也没有问题,但现在并不通用。

1、修改源码让两个interface中的函数不一样。

2、为每个interface实现一个独立的类。

class GolfEnthusiast implement Golfer{

}

interface是设计和开发代码的利器,但是在定义interface时,存在着函数及常量名称发生冲突的可能性,你应当谨慎地为函数和常量命名,减少与其他interface名称发生冲突的机会。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值