文章目录
jdk1.8接口变化
- 简介
我们通常所说的接口的作用是用于定义一套标准、约束、规范等,接口中的方法只声明方法的签名,不提供相应的方法体,方法体由对应的实现类去实现。
在JDK1.8中打破了这样的认识,接口中的方法可以有方法体,但需要关键字static或者default来修饰。
关键词 | 属性 |
---|---|
static | 静态方法,静态方法通过接口名来调用 |
default | 默认方法,默认方法通过实例对象来调用 |
- 作用
静态方法和默认方法都有自己的方法体,用于提供一套默认的实现,这样子类对于该方法就不需要强制来实现,可以选择使用默认的实现,也可以重写自己的实现。
- demo
IHello接口:
public interface IHello {
// 使用abstract修饰不修饰都行
void sayHi();
//使用静态方法
static void sayHello(){
System.out.println("static method: say hello");
}
//使用默认方法
default void sayByebye(){
System.out.println("default mehtod: say byebye");
}
}
HelloImpl实现类:
public class HelloImpl implements IHello {
//只重写sayHi()方法,默认方法和静态方法可以通过实例或类名调用
@Override
public void sayHi() {
System.out.println("normal method: say hi");
}
}
Main:
public class Main {
public static void main(String[] args) {
HelloImpl helloImpl = new HelloImpl();
// 对于abstract抽象方法通过实例对象来调用
helloImpl.sayHi();
// default方法只能通过实例对象来调用
helloImpl.sayByebye();
// 静态方法通过 接口名.方法名() 来调用
IHello.sayHello();