多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 简介 **JDK1.8新特性** **接口可以增加普通方法和静态方法** **避免子类重复实现** 之前java的接口是有常量和抽象方法组成的,但是从JDK1.8开始这个改变了 # 增加普通方法 现在允许在接口里面定义普通方法了.但是如果要定义普通方法就必须明确使用default来进行定义 ~~~ package com.study; interface IMessage { public void print(); //接口定义普通方法 default void fun() { System.out.println("接口中的方法"); } } class MessageImpl implements IMessage { @Override public void print() { System.out.println("hello world"); } } public class HelloWorld { public static void main(String[] args) { IMessage msg = new MessageImpl(); msg.fun(); } } ~~~ 可以看到接口中可以定义普通方法 # 增加静态方法 定义static方法 ~~~ interface IMessage { public void print(); // 定义接口静态方法 static void get() { System.out.println("直接接口调用"); } } public class HelloWorld { public static void main(String[] args) { IMessage.get(); } } ~~~ # 增加私有方法和静态方法 jdk9中接口可以定义下面的这些 * **常量** * **抽象方法** * **默认方法** * **静态方法** * **私有方法** * **私有静态方法** ~~~ public interface JavaNine{ String TYPE_NAME = "java seven interface"; int TYPE_AGE = 20; String TYPE_DES = "java seven interface description"; default void method01(){ //TODO } default void method02(String message){ //TODO } private void method(){ //TODO } // Any other abstract methods void method03(); void method04(String arg); ... String method05(); } ~~~ 在接口中定义私有方法 在Interface中编写私有方法时,我们应该遵循以下规则: 我们应该使用私有修饰符(private)来定义这些方法。 我们不能同时使用私有修饰符(private)和abstract来定义这些方法。 “私有”方法意味着完全实现的方法,因为子类不能继承并覆盖此方法。 “抽象”方法意味着无实现方法。这里子类应该继承并覆盖此方法。 私有方法必须包含方法体,必须是具体方法。 这些接口私有方法仅在该接口内是有用的或可访问的。我们无法从接口访问或继承私有方法到另一个接口或类