Java-接口组成更新

一、接口组成

  • 常量 public static final
  • 抽象方法 public abstract
  • 默认方法(Java8)
  • 静态方法(Java8)
  • 私有方法(Java9)

案例

需求:

  1. 定义一个接口Myinterface,里面有两个抽象方法:

void show1();

void show2();

  1. 定义接口的两个实现类:

InterIml1

InterIml2

  1. 定义测试类:

Demo

在主方法中,按照多态的方式创建对象并使用

当接口已经不能满足我们的需求时,需要新的功能,如果给接口添加一个抽象方法,则接口的实现类均会报错,这样就很难维护,所以引入接口默认方法

二、接口中默认方法

接口中默认方法的定义格式:

  • 格式:

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

  • 范例:

public default void show3(){}

接口中默认方法的注意事项

  • 默认方法不是抽象方法,所以不强制被重写。但是可以被重写,重写的时候去掉default关键字
  • public可以省略,default不能省略

主要用于接口的升级,而不破坏现有代码

三、接口中静态方法

定义格式

  • 格式:

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

  • 范例

    public static void show(){ }

注意事项

  • 静态方法只能通过接口名调用,不能通过实现类名或对象名调用(假设有两个接口都有同名的静态方法,实现类也都实现了这两个接口,使用对象名调用会造成编译器混乱,不知道用哪个方法)
  • public可以省略,static不能省略

四、接口中私有方法

Java 8允许在接口中定义带方法体的默认方法和静态方法。这样会引发一个问题:当两个默认方法或静态方法中包含一段相同的代码实现时,程序必然考虑将这段实现代码抽取成一个共性方法,而这个共性方法是不需要让别人使用的,因此用私有给隐藏起来。

接口中私有方法的定义格式:

可以是普通私有方法静态私有方法

定义格式

  • 格式1:

    private 返回值类型 方法名(参数列表){ }

  • 范例:

    private void show(){ }

  • 格式2:

    private static 返回值类型 方法名(参数列表){ }

  • 范例:

    private static void method(){ }

注意事项

  • 默认方法可以调用私有的静态方法和费静态方法
  • 静态方法只能调用私有的静态方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package Inter_private;

public interface Inter {
default void show1(){
System.out.println("默认方法show1调用了");
show();
}
default void show2(){
System.out.println("默认方法show2调用了");
show();
}
private void show(){
System.out.println("两岸猿声啼不住");
System.out.println("却话巴山夜雨时");
}

static void method1(){
System.out.println("静态方法method1调用了");
method();
}
static void method2(){
System.out.println("静态方法method2调用了");
method();
}
private void method(){
System.out.println("两岸猿声啼不住");
System.out.println("却话巴山夜雨时");
}
}

请我喝杯咖啡吧~

支付宝
微信