Java8 接口的静态方法和默认方法

Posted1 by 呼延十 on March 10, 2018 Hot:

java8的接口中可以有default方法及static方法。
普通的抽象方法不可以有实现,实现此接口的类必须实现所有抽象方法。
默认方法必须有实现,实现此接口的类默认继承此方法,当然你也可以覆盖默认方法。(不实现此方法会默认继承,并不会报错)。
静态方法必须有实现。但是实现此接口的类无法实现静态方法。

举一个小栗子:

	public class DefaultInterfaceTest {

	  private static final LoggerSimpleFromPfliu log = new LoggerSimpleFromPfliu(
	      DefaultInterfaceTest.class);


	  public static void main(String args[]) {
	    TestInterface.staticMethod();
	    DefaultInterfaceTest defaultInterfaceTest = new DefaultInterfaceTest();
	    defaultInterfaceTest.test();

	  }

	  private void test() {
	    TestClass testClass = new TestClass();
	    testClass.abstractmethod();
	    testClass.defaultMethod();


	  }

	  private class TestClass implements TestInterface {

	   	@Override
	    public void abstractmethod() {
	      log.debug("abstract");
	    }

	  }

	  public interface TestInterface {
	    void abstractmethod();
	    default void defaultMethod() {
	      log.debug("default");
	    }
	    static void staticMethod() {
	      log.debug("static");
	    }
	  }
	}

程序执行结果是:
static
abstract
default