接口默认方法

接口默认方法

JDK8 中为什么有接口默认方法

以前创建了一个接口,并且已经被大量的类实现。
如果需要再扩充这个接口的功能加新的方法,就会导致所有已经实现的子类需要重写这个方法。
如果在接口中使用默认方法就不会有这个问题。
所以从 JDK8 开始新加了接口默认方法,便于接口的扩展。

接口中默认方法的规则

1.默认方法使用 default 关键字,一个接口中可以有多个默认方法。
2.接口中既可以定义抽象方法,又可以定义默认方法,默认方法不是抽象方法。
3.子类实现接口的时候,可以直接调用接口中的默认方法,即继承了接口中的默认方法。
4.接口中同时还可以定义静态方法,静态方法通过接口名调用。

默认方法的案例案例需求:1.创建一个 Cat 接口,包含 play()抽象方法,eat()静态方法,run()默认方法,climb()默认方法2.写一个子类 WhiteCat 白猫实现了猫接口3.实现 play()抽象方法,重写 run()的默认方法4.创建类 Demo04Interface,在 main 函数中创建 WhiteCat 对象a) 调用接口中静态方法 eat()b) 调用白猫子类中实现的方法 play()c) 调用白猫子类中重写的方法 run()d) 调用接口中默认方法 climb()



interface Cat {

 void play(); //抽象方法

 //静态方法

 static void eat() {

 System.out.println("猫吃鱼");

 }

 //默认方法

 default void run() {

 System.out.println("猫跑");

 }

 //默认方法

 default void climb() {

 System.out.println("猫爬树");

 }

}

//子类白猫实现了猫接口

class WhiteCat implements Cat {

 @Override

 public void play() { //实现抽象方法

 System.out.println("白猫玩");

 }

 @Override

 public void run() { //也可以重写默认方法

 System.out.println("白猫跑");

 }

}

//主类中调用

public class Demo04Interface {

 public static void main(String[] args) {

 WhiteCat cat = new WhiteCat();

 Cat.eat(); //调用接口中静态方法

 cat.play(); //调用白猫子类中实现的方法

 cat.run(); //调用白猫子类中重写的方法

 cat.climb(); //调用接口中默认方法

 }

}

展开阅读全文

没有更多推荐了,返回首页