17_接口

 


 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() {

    }
} 
复制代码
posted @   学而不思则罔!  阅读(170)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界
点击右上角即可分享
微信分享提示