jdk16全面学习之jls的第九章Interfaces


  这一章是就是针对接口学习的.之前有过接口的初步学习,这里将深入展开.

1 接口的继承没有传递性

1.1 方法的重写

  与抽象类不同,接口的方法可以任意的重写和改写.编辑如下代码MethodRewrite.java


interface PointInterface {
    int v = 2;
    static int sv = 2;

    default void move() {
        System.out.println("super move");
    }

    static void move(int x) {
        System.out.println("in super " + x);
    }
}

interface RealPointInterface extends PointInterface {
    default void move() {
        System.out.println("sub move");
    }

    static void move(int x) {
        System.out.println("in sub interface " + x);
    }
}

class Super implements PointInterface {
    public void move() {
        PointInterface.super.move();
    }
}

class Sub implements RealPointInterface {

    public void move() {
        System.out.println("in sub call");
        RealPointInterface.super.move();
    }

    public void m() {
        RealPointInterface.super.move();
    }

    static void m(int x) {
        System.out.println("in sub object " + x);
    }

}

public class MethodRewrite {

    public static void main(String[] args) {
        //final Super sub = new Sub();
        final Sub sub = new Sub();
        sub.move();
        sub.m();
        //sub.move(2);
        RealPointInterface.move(2);
    }

}

  可以看到,即使方法名相同,此时只要输入参数不同,那么就不会报错.这一点与类的继承不同.

1.2 继承不可传递

  若是类的继承,则肯定具有传递性,比如类A是类B的子类,类B是C的子类,那么A一定是C的子类.但是接口不存在这种传递性.
  放开//final Super sub = new Sub();得到如下报错信息
在这里插入图片描述
  可知使用了子类接口的类无法转换为使用了父类接口的类,所以接口的继承不具有传递性.

1.3 default方法的调用

  Default方法的调用可以分为两种情况,第一是实现类重写了该方法,在实例对象中直接调用,第二是在使用了该接口的类中直接使用super来调用,就像是实例方法的调用一样.注释掉上面放开的语句,运行main方法得到如下结果
在这里插入图片描述
  可见,不论是default方法还是静态方法,都是类似于类的属性,是和类型也就是左值严格绑定的.

1.4 静态方法无法继承

  接口的静态方法也是无法继承的,方法注释//sub.move(2);会得到如下报错
在这里插入图片描述
  可见,接口的静态方法无法被继承.

2 注解

  注解也是接口的一种使用形式,注解的信息通过反射来获取.一些元注解也是自定义注解的基石,这些都是基础的东西.
  正因为注解的信息可以通过反射获取,所以很多大型的工程都自定义了一套注解,作为替代xml配置模式的一种手段.目前基于xml配置的已不多见,基本上都是基于注解来配置了.只要事先定义好注解及解析注解的程序,就可以做任何处理了.

3 总结

  接口作为非常灵活的java类型,在平时使用中常被用到.关于接口的东西主要是继承相关的,除此之外还有其自带的默认和静态方法,这些方法也是和类型严格绑定的.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值