首页 > 其他 > 详细

17_接口

时间:2020-05-13 13:50:50      阅读:67      评论:0      收藏:0      [点我收藏+]

技术分享图片

 1.定义

技术分享图片


 

 2.格式

技术分享图片


 3.抽象方法

技术分享图片


 

 4.默认方法

技术分享图片


 

 5.静态方法

技术分享图片


 

 6.私有方法

技术分享图片


 

 7.常量

技术分享图片


 

 8.注意事项

技术分享图片

package JavaBasicReview;

public class JavaGrammer {

    public static void main(String[] args) {
        System.out.println(InterfaceClass.AGE);
        InterfaceClass.staticMethod();
        System.out.println(Zi.AGE);//接口中的成员变量,可用实现类或者子类接口来调用
        //Zi.staticMethod();接口中的静态方法,只能用包含此静态方法的接口调用
        //InterfaceClass02.staticMethod();接口中的静态方法,只能用包含此静态方法的接口调用
        new Zi().defaultMethod();//当父类中方法与接口中默认方法重名时,优先调父类方法


    }

}

interface InterfaceClass {
    //接口中可以有成员变量,必须有[public] [static] [final]修饰,必须初始化,可省略,版本要求 >=JDK9
    public static final int AGE = 99;

    //静态方法,只能通过接口类调用,实现类不能重写该方法,版本要求 >= JDK8
    public static void staticMethod() {
        staticPrivateMethod();
        System.out.println("接口中的静态方法!");

    }

    //静态私有方法,为了接口中静态方法公共代码的抽离,解决了多个静态方法中重复代码的问题 版本要求 >=JDK9
    private static void staticPrivateMethod() {
        System.out.println("接口中静态方法中的重复代码!");
    }

    /*默认方法,为了解决:当接口类升级后(添加了抽象方法),其所有的实现类必须都实现该方法,很不方便
     * 使用默认方法,可以解决该类问题,只需要部分实现类实现该默认方法即可,版本要求>= JDK8*/
    public default void defaultMethod() {
        privateMethod();
        System.out.println("接口中的默认方法!");
    }

    //普通私有方法,解决多个默认方法中重复代码的问题
    private void privateMethod() {
        System.out.println("接口中普通私有方法!");
    }

    //抽象方法
    public abstract void abstractMethod();
}

interface InterfaceClass01 {
    //抽象方法
    public abstract void abstractMethod();

    /*当实现类实现多个接口时,如果默认方法重名,那么实现类必须重写该默认方法*/
    public default void defaultMethod() {
        privateMethod();
        System.out.println("接口01中的默认方法!");
    }

    //普通私有方法,解决多个默认方法中重复代码的问题
    private void privateMethod() {
        System.out.println("接口01中普通私有方法!");
    }
}

interface InterfaceClass02 extends InterfaceClass, InterfaceClass01 {
    /*当接口继承多个接口时,如果默认方法重复,必须在子类接口中重写该默认方法*/
    @Override
    default void defaultMethod() {

    }
}

class Fu {
    public  void defaultMethod() {
        privateMethod();
        System.out.println("Fu中的默认方法!");
    }

    //普通私有方法,解决多个默认方法中重复代码的问题
    private void privateMethod() {
        System.out.println("Fu中普通私有方法!");
    }
}

//当一个类既有父类也有接口时,必须先继承再实现
class Zi /*extends Fu*/  implements InterfaceClass/*, InterfaceClass01*/   {
    //当实现类实现了多个接口,且默认方法重名时,此时该实现类必须重写该默认方法
    /*@Override
    public void defaultMethod() {

    }*/

    @Override
    public void abstractMethod() {

    }
} 

17_接口

原文:https://www.cnblogs.com/bajiaotai/p/12880732.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!