1 简介

default关键字和Java中的public、private等关键字一样,都属于修饰符关键字,可以用来修饰属性、方法以及类,但是default一般用来修饰接口中的方法。

2 原因

出现该关键字的原因是,由于接口在Java中定义之初,有一个缺点,那就是,如果定义了一个接口,接口中又定义了N个方法,那么某个具体的类在实现该接口时,需要实现接口中的所有方法,不管是否需要用到接口中的方法。如果接口中的某个方法被default关键字修饰了,那么具体的实现类中可以不用实现方法。

3 举例说明

1
2
3
4
5
interface Person {
default void show() {
System.out.println("this is show");
}
}

Student类可以不用实现Person接口中的show()方法。

1
2
3
class Student implements Person {
//可以不用实现show()方法
}

3.1 解决冲突

如果实现类实现了个多个接口,假如不同的接口中有同名的被default修饰的方法,那么此时,实现类就必须重写这个方法,否则会编译出错。

1
2
3
4
5
public interface Person1 {
default void prinN(){
System.out.println(Person1.class.getName());
}
}
1
2
3
4
5
public interface Person2 {
default void prinN(){
System.out.println(Person2.class.getName());
}
}
1
2
3
4
5
6
class Student implements Person1, Person2 {
@Override
public void prinN(){
System.out.println(Student.class.getName());
}
}

写在最后

欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。
微信公众号