默认方法,及在Java 8 中我们可以定义具有实体的方法,需要加上default关键字来修饰。
例如:
Person.java
1 2 3 4 5 6 7 8
| package com.devnp;
public interface Person {
default void print(){ System.out.println("Hello World."); } }
|
PersonImpl.java
1 2 3 4 5
| package com.devnp;
public class PersonImpl implements Person {
}
|
Java8Test.java
1 2 3 4 5 6 7 8 9 10
| package com.devnp;
public class Java8Test {
public static void main(String[] args) {
new PersonImpl().print(); ; }
}
|
结果:
Hello World.
当然,在接口中默认的方法可以不止一个可以添加多个
Person.java
1 2 3 4 5 6 7 8 9 10 11 12
| package com.devnp;
public interface Person {
default void print(){ System.out.println("Hello World."); } default void print2(){ System.out.println("Hello World2."); } }
|
在接口中还可以声明静态方法
Person.java
1 2 3 4 5 6 7 8
| package com.devnp;
public interface Person {
static void print(){ System.out.println("Hello World3."); } }
|
注意:
1.接口默认方法不能像普通类那样去覆写 Object 类的 equals、hashCode 和 toString 方法。
2.接口中的静态方法必须是 public 的,public 修饰符可以省略,static 修饰符不能省略。
为什么会出现这个特性?
接口的好处在于是面向对像的,不用去实现具体的逻辑,但同时这样增加了接口和实现类的耦合度,当接口进行修改时,所有实现类都需要修改,默认的方法,在接口中添加新的默认方法,实现类不用全部做出修改。
Author:
Darren Du
License:
Copyright (c) 2019 MIT LICENSE