【java基础】接口的私有方法的使用

·


前言

问题描述:
我们需要抽取一个公用方法,用来解决两个默认方法之间重复代码的问问题。
但是这个共有方法不应该让实现类使用,应该时私有化的
解决方案:
从java9开始,接口当中允许定义私有方法。
1.普通私有方法,解决多个方法之间重复代码问题
格式:
private 返回值类型 方法名称(参数列表){
方法体
}
2.静态私有方法,解决多个静态方法之间代码重复问题
private static 返回值类型 方法名称(参数列表)(){
方法体
}

接口的私有方法的使用,是为了解决多个静态方法中重复的问题。


一、接口的私有方法应用场景?

代码片段:

public interface MyInterfacePrivateA {
    
    
    public default void methodDeault1(){
    
    
        System.out.println("默认方法1");
        System.out.println("AAA");
        System.out.println("BBB");
        System.out.println("BBB");
    }
    public default void methodDeault2(){
    
    
        System.out.println("默认方法2");
        System.out.println("AAA");
        System.out.println("BBB");
        System.out.println("BBB");
    }
}

接口的私有方法的使用场景:在代码中methodDeault1()和methodDeault2()有共同的输出语句(共同方法也可)。

二、正确写法

1.重写接口

代码如下(示例):

public interface MyInterfacePrivateB  {
    
    
    public static void methodStatic1(){
    
    
        System.out.println("静态方法1");
        methodStaticCommon();
    }

    public static void methodStatic2(){
    
    
        System.out.println("静态方法2");
        methodStaticCommon();

    }
    //如果jdk不是java 9 此处会报错,报错内容“make not methodStaticCommon private”
    private static void methodStaticCommon(){
    
    
        System.out.println("AAA");
        System.out.println("BBB");
        System.out.println("BBB");
    }
}

2.对接口的引用

代码如下(示例):

注:不能调用MyInterfacePrivateB.methodStaticCommon,因为该方法是私有的方法,只有在本类或者接口中调用

public class Demo04Interface {
    
    
    public static void main(String[] args) {
    
    
        MyInterfacePrivateB.methodStatic1();;
        MyInterfacePrivateB.methodStatic2();
    }
}

# 接口内容总结

在Java 9+版本中,接口的内容可以有:

1.成员变量其实是常量,格式:

[public] [static] [final] 数据类型常量名称=数据值;

常量必须进行赋值,而且一旦赋值不能改变。

常量名称完全大写,用下划线进行分隔。

2.接口中最重要的就是抽象方法,格式:

[public] [abstract] 返回值类型方法名称(参数列表);

注意: 实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。

3.从Java 8开始,接口里允许定义默认方法,格式:

[public] default 返回值类型方法名称(参数列表) {方法体}

注意: 默认方法也可以被覆盖重写

4.从Java 8开始,接口里允许定义静态方法,格式:

[public] static 返回值类型方法名称(参数列表) {方法体}

注意:应该通过接口名称进行调用,不能通过实现类对象调用接口静态方法

5.从Java 9开始,接口里允许定义私有很乏,格式:

普通私有方法: private 返回值类型方法名称(参数列表) {方法体}

静态私有方法: private static 返回值类型方法名称(参数列表) {方法体}
注意: private的方法只有接口自己才能调用,不能被实现类或别人使用。

猜你喜欢

转载自blog.csdn.net/weixin_42556863/article/details/108490610