【Java学习】默认方法

什么是默认方法

默认方法是JDK8新特性,指的是接口也可以提供具体方法了,而不像以前,只能提供抽象方法。

为什么会有默认方法

原来的类不用改动就都能得到相同的一种方法。可以方便扩展新的类,而且不影响别的类。

注意

当一个类实现两个接口并且两个接口中有相同的默认方法时,必须在类中override默认方法。要不然编译器无法判断使用谁的默认方法。

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*AD.java*/
public interface AD {
//物理伤害
public void physicAttack();

default public void attack(){
System.out.println("default method attack");
}
}

/*AP.java*/
public interface AP {
public void magicAttack();

default public void attack(){
System.out.println("default method attack");
}
}

/*ADAPHero.java*/
public class ADAPHero extends Hero implements AP,AD,Mortal{

@Override
public void physicAttack() {
System.out.println("进行物理攻击");
}

@Override
public void magicAttack() {
System.out.println("进行魔法攻击");
}

@Override
public void die() {
System.out.println(name +" is an APADHero and die.");
}

// 必须重写该方法才不会报错
public void attack(){
System.out.println("ADAP attack");
}
}


【Java学习】默认方法
http://liuminxuan.github.io/2020/12/21/【Java学习】默认方法/
发布于
2020年12月21日
许可协议