JDK1.8的接口新特征

JDK7及其之前

  1. 接口的变量都是public final static 全局静态常量,无变化
  2. 接口中都是抽象abstract方法,不能有static方法(因为abstract和static、final、private不能共存)

JDK1.8及其之后

  1. 接口中可以添加非抽象方法(static),实现类不能重写,只能通过接口名调用。
  2. 如果子类中定义了相同名字的静态方法,那就是完全不同的方法了,直接从属于子类。可以通过子类名直接调用

  1. 接口中可以添加非抽象方法(default),实现类可以重写,只能通过对象名调用
  2. 实现类可以直接使用default方法,可以重写default方法,但是必须去掉default。(default只能接口中使用)
  3. 上级接口中default方法的调用:MyInterface.super.method2()

提供非抽象方法的目的

  1. 为了解决实现该接口的子类代码重复的问题(使用default,当实现类很多的时候,抽象方法加default变成非抽象方法,可以使得实现类 不重写时,使用默认抽象方法)
  2. 为了既有的成千上万的Java类库的类增加新功能,且不必对这些类重新进行设计。比如只需在Collection接口中增加default Stream<E> stream(),相应的Set和List接口以及它们的子类都包含此的方法,不必为每个子类都重新copy这个方法。
public class Myclass implements MyInterface {
    @Override
    public void method1(){

    }

    public static void method2() {
        System.out.println("----MyClass static method2----");
    }

    @Override
    public void method3() {
        System.out.println("----MyClass method-----");
    }

    public static void main(String[] args) {
        MyInterface.method2();
        Myclass.method2();
        Myclass mc = new Myclass();
        //mc.method2();//不能够通过对象名调用
        MyInterface.method2();
        mc.method3();
        
    }
}

 

public interface MyInterface {
    //全局静态常量没有变化

    //变化1 抽象方法
    void method1();

    //2.非抽象方法:static  修饰 不能被实现类重写 只能通过接口名调用
    public static void method2() {
        System.out.println("MyInterface static method");
    }

    //3.非抽象方法: default 修饰  类可以继承也可以重写,只能通过对象名调用不能通过接口名调用
    //如果重写 在实现类中去掉default关键字
    public default void method3() {
        System.out.println("------MyInterface default method3-----");

    }

    public static void main(String[] args) {
        MyInterface.method2();
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值