在做SCJP的模拟题时,问到如下
which two are valid declarations within an interface definition?(choose two)
1.void methoda();
2.public double methoda();
3.public final double methoda();
4.static void methoda(double d1);
5.protected void methoda(double d1);
Answer 1,2
正常接口默认方法的类型应为 public、abstract的类型,可是感觉好像和本题没什么关系,不解
谢谢指点!

解决方案 »

  1.   

    JAVA中,接口中的方法自动为公有的,抽象的.所以答案1 没有PUBLIC也是正确的.但答案5违反了此规则,所以错了.由于接口中不能有具体的方法(也就是说必须全是抽象方法),它们都要在实现类中被实现(重写).如果加上FINAL,就不能在子类中重写.所在答案3也错了STATIC的方法,意味着可以通过类名直接使用.既然接口中的方法都是抽象的方法,那么使用一个抽象方法又有何意义?这样看来,答案4自然就是错的了
      

  2.   

    接口的方法的访问级只能是public or default
      

  3.   

    JAVA中,接口中的方法自动为公有的,抽象的.这个理论依据没学过,不过楼上的楼上的楼上解答挺有说服力的。[public]  [abstract]  return-type   method([argument-list]) [ throws exception-className];我能想到的接口定义大抵如此吧
      

  4.   

    把你的SCJP的模拟题给我发一份好吗,我学学,[email protected],谢谢!
      

  5.   

    interface默认[public] + [abstract],有没有[public]和[abstract]都一样!