重学Java(028)—— Java基础知识(接口中的私有方法、接口中的常量、接口小结)

一、接口中的私有方法

当我们需要抽取一个共有方法,用来解决两个默认方法之间重复代码的问题的时候,这个共有方法不应该让实现类使用,应该是私有化的。

从Java 9开始,接口中允许定义私有方法。

  1. 普通私有方法:解决多个默认方法之间重复代码问题
    格式:
private 返回值类型 方法名称(参数列表) {
    方法体
}
  1. 静态私有方法:解决多个静态方法之间重复代码问题
    格式:
private static 返回值类型 方法名称(参数列表) {
    方法体
}

举例说明:

首先我们定义一个接口,接口中定义两个默认方法和一个用于抽取它们重复代码的私有方法:

public interface MyInterfacePrivateA {

    public default void methodDefault1() {
        System.out.println("这是一个默认方法1");
        methodCommon();
    }

    public default void methodDefault2() {
        System.out.println("这是一个默认方法2");
        methodCommon();
    }

    private  void methodCommon() {
        System.out.println("AAA");
        System.out.println("BBB");
        System.out.println("CCC");
    }
}

然后我们定义它的实现类,覆盖重写两个默认方法:

public class MyInterfacePrivateImpl implements MyInterfacePrivateA {

    @Override
    public void methodDefault1() {

    }

    @Override
    public void methodDefault2() {

    }
}

最后我们定义一个测试类:

public class Demo04Interface {

    public static void main(String[] args) {
        MyInterfacePrivateImpl impl = new MyInterfacePrivateImpl();
        impl.methodDefault1();
        impl.methodDefault2();

    }
}

二、接口中的常量

接口当中也可以定义“成员变量”,但是必须使用public static final三个关键字进行修饰。从效果上看,这其实就是接口的【常量】。

1.定义格式

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

注意:一旦使用final关键字进行修饰,说明不可改变。

2.接口中常量的使用

接口中常量的使用非常简单,下面进行简单示例:

首先我们定义一个接口:

public interface  MyInterfaceConst {

    // 这其实就是一个常量,一旦赋值,不可以修改
    public static final int NUM_OF_MY_CLASS = 13;

}

然后我们定义一个测试类,在main方法中实现对接口的访问:

public class Demo05Interface {

    public static void main(String[] args) {
        // 访问接口中的常量
        System.out.println(MyInterfaceConst.NUM_OF_MY_CLASS);
    }

}

3.注意事项

  1. 接口当中的常量,可以省略public static final,注意:不写也照样是接口中的常量。
  2. 接口当中的常量,必须进行赋值,不能不赋值。
  3. 接口中常量的名称,使用完全大写的字母,用下划线进行分隔(推荐命名规则)

三、接口小结

在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的方法只有接口自己才能调用,不能被实现类或者别人使用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值