Java7、Java8、Java9接口演变

Java7

Java7版本接口只能定义公共常量和公共抽象方法,在当前版本实现接口的类必须实现接口中的所有方法,这使得接口有时候维护会比较麻烦,接口有所改动时该接口的所有实现类均需要修改。

public interface Java7{
// public 和 final关键字可省略 
    int num = 10;
    void test();
}

Java8

Java8版本接口在Java7的基础上新增default method,也称为虚拟扩展方法(Virtual Extension Methods),这个特性使得实现接口的类不需要将方法显示实现,直接在实现类中进行调用即可,当接口方法有所修改时,也不用去修改实现类。此外还新增了static method,被static修饰的方法不能被重写,只能通过接口本身进行调用。

public interface Java8{
// public 和 final关键字可省略 
    int num = 10;
    default void defaultTest(){
        System.out.println("default test");
    }
    static void staticTest(){
        System.out.println("static test");
    }
}
public class Java8Implements implements Java8{
    public static void main(String[] args){  
        Java8Implements java8Implements = new Java8Implements();
        //调用Java8接口方法
        java8Implements.defaultTest();
        //通过接口直接调用方法
        Java8.staticTest();
            
    }
}

Java9

Java9版本接口在Java8的基础上新增private method和private static method,它们均不能被重写,而且private method一般结合default method一起使用,private static method一般结合static method使用。

public interface Java9{
    //default方法能够调用abstract/private/static/private static方法。
    default void defaultTest(){
        System.out.println("default test");
        privateTest();
    }
    //static方法只能调用static和private static方法 
    //可以这样理解 非静态方法能够调用非静态方法(非静私有和公有)和静态(静态私有和公有)方法,而静               
    //态方法只能调用静态(静态私有和公有)方法
    static void staticTest(){
        System.out.println("static test");
        privateStaticTest();
    }
    private void privateTest(){
        System.out.println("private test");
    }
    private static void privateStaticTest(){
        System.out.println("private static test");
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值