一、說明
Java 8 新增了接口的靜態方法和默認方法。即接口可以有實現方法,而且不需要實現類去實現其方法,通過static和default關鍵字實現
靜態方法和默認方法的引進,解決了接口一旦發生修改將與現有的實現不兼容的問題
二、示例
- 1、接口
package com.xl.infc;
public interface Employee {
/**
* 抽象方法 實現類必須重寫,必須通過實現類的實例來調用
*/
public void say();
/**
* 靜態方法 只能通過接口的接口名來調用,實現類可以互不衝突的定義相同的方法並通過實現類的類名來調用
*/
public static void work() {
System.out.println("幹活");
}
/**
* 默認方法 必須通過實現類的實例來調用,可以重寫,但不能再加default關鍵字,且將覆蓋接口中的實現
*/
public default void role() {
System.out.println("員工");
}
}
- 2、實現
package com.xl.infc;
public class Programmer implements Employee {
@Override
public void say() {
System.out.println("上班");
}
/**
* 實現類可以定義的和接口相同的靜態方法,通過類名來調用
*/
public static void work() {
System.out.println("擼代碼");
}
/**
* 重寫接口的默認方法,不能再用default關鍵字修飾,且將覆蓋接口中的實現,且必須通過實例來調用
*/
@Override
public void role() {
System.out.println("程序員");
}
public static void main(String[] args) {
Employee.work();
Programmer.work();
Programmer p = new Programmer();
p.say();
p.role();
}
}