19.面向对象进阶:接口,被实现,多继承,JDK8新增方法(默认

2022-01-23  本文已影响0人  每天起床都想摆

接口,多实现,多继承

接口概述,特点

接口的基本使用:被实现(类可以实现多个接口)

接口与接口的关系:多继承(一个接口可以同时继承多个接口)

JDK8开始接口新增方法

JDK8版本开始后,Java只对接口的成员方法进行了新增

使用接口的注意事项(极端面试官面试考察)

  1. 接口不能创建对象

    因为接口是更加彻底的抽象

  2. 一个类实现多个接口,多个接口中有同样的静态方法不冲突

    因为静态方法调用是用所在的接口名调用,同名时也是自己的接口调用自己的静态方法,因此不冲突

  3. 一个类继承了父类,同时又实现了接口,父类中和接口中有同名方法,默认用父类的

    即A extends B implements C,此时就近先继承了然后实现了C,如果实现和继承位置互换 ,就变成了先实现再继承,会造成继承与实现之间的冲突,即A implements C extends B是不合法的

  4. 一个类实现了多个接口,多个接口中存在同名的默认方法,不冲突,这个类重写该方法即可

    解释同上述测试代码
    “(其实本质上就是实例方法,但是官方不承认,因为和抽象的概念冲突,加上default后就成了默认方法)”

    类之所以无法多继承,原因之一就是无法对同名方法做出选择

    Java官方为了强制让接口多实现,硬性规定遇到这种情况,干掉所有接口的同名方法,直接重写它们

    于是诞生了新的问题:即程序员非调用同名默认方法中的一个不可,会发现永远无法调用(期待未来更高版本的的JDK)

    这是典型的“耍无赖”,如同默认方法的诞生,从抽象的层面接口无法多实现,所以直接推翻自己,强制规定

  5. 一个 接口继承多个接口,是没有问题的,如果多个接口中存在规范冲突则不能多继承

    往上查看《接口与接口的关系:多继承》中的测试代码,以及规范合并和规范冲突的概念

上一篇 下一篇

猜你喜欢

热点阅读