2-1 JDK8新特性之default 关键字
是什么?
- jdk8之前,接口里面只能有抽象方法,不能有任何方法实现的。
- jdk8里面打破了这个规定,引入了新的关键字default,使用default修饰方法,可以在接口里面定义具体的方法实现。接口里面可以定义两种方法实现。默认方法和静态方法。
- 也就是接口中可以包含方法体,这打破了Java之前版本对接口的语法限制,从而使得接口在进行扩展的时候,不会破坏与接口相关的实现类代码。
有什么用?
- 往现存接口中添加新的方法,即不强制那些实现了该接口的类也同时实现这个新加的方法。
使用示例
- 定义一个接口,并声明一个default方法
// 定义接口
public interface Animal {
void run();
void eat();
// 这是默认方法
default void breath(){
System.out.println("使用氧气呼吸");
}
// 这是静态方法
static void test(){
System.out.println("这个是静态方法");
}
}
- 实现Animal的实现类
// 实现类,可以看到在该实现类中只需实现 run() 和 eat() 方法
public class Dog implements Animal{
@Override
public void run() {
System.out.println("dog 跑");
}
@Override
public void eat() {
System.out.println("dog 吃");
}
}
- 测试类
public class Main {
public static void main(String[] args) {
Dog dog = new Dog();
dog.eat();
dog.run();
dog.breath();
// dog.test() 该方法报错
Animal.test();
}
}
- 测试结果
未经授权不得转载或转载请注明出处