JDK8新特性之接口总结

1. 先谈谈JDK8新特性接口
      在JDK7以及以前的版本中,接口里的方法都是抽象的,并且不能存在静态方法
      所有方法的申名都用 public [返回类型] [方法名](参数列表) [抛出异常];
      
  在jdk8中存在2种类型的方法。
   1)静态方法  public static [方法名]([参数列表]) [throws 异常列表]
            由于Java中可以同时实现多接口,如果2个接口同时存在同名,同参数的静态方法,如果同子类.静态方法,将不知道访问哪一个。
            因此不允许使用【子类.父类静态方法】形式访问,不能通过super方法.
      InterA interA = new CImpl();
 InterA.method(); //只可以父类名访问静态方法
     
     子类实现多个接口,存在的静态方法并不会冲突。因为只能通过各自父类访问父类静态方法。
     public class CImpl implements InterA,InterB  
     其中InterA InterB存在同名静态方法;甚至子类也可以存在同名方法,但是不能用override修饰,因为static方法不能重写
     public static void method(){
System.out.println("子类C中的静态方法");
 }
     
   2) JDK8还允许存在默认方法 public default void defaultMethod(){}  (default不能省略);
      子类重写接口默认方法时,必须去掉default。
   @Override
public void defaultMethod(){
System.out.println("子类A中的默认方法,必须去掉default修饰符");
}
          子类实现多个接口时,如果存在同名的默认方法,子类将不知道继承哪一个,因此编译器要求子类重写父类中的默认方法;不过注意的事,
          子类不能用default修饰,default只能修饰接口中的默认方法。
     
@Override
public void defaultMethod() {
// TODO Auto-generated method stub
Inter8A.super.defaultMethod();
}

  3)优先级的问题
   如果一个类继承一个接口的默认方法,同时又继承了另外一个类的方法。
  那么子类的方法优先跟父类的方法行为一致.
  Inter8A s = new Son();
s.method(); //此处虽然申名是接口类,但是调用子类的方法,而子类的方法跟父类的一致。
   
  
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值