Java 8中容許接口中包含具備具體實現的方法,該方法稱爲「默認方法」,默認方法使用default關鍵字修飾。java
package www.muzi.com.interfaceFun; /** * Date:2017/3/13 14:19 */ public interface RoleInterface { int ss = 100; default String getName(){ return "張三"; } }
若一個接口中定義了一個默認方法,而另一個父類或接口中又定義了一個同名的方法時:ide
package www.muzi.com.interfaceFun; /** * Date:2017/3/13 14:19 */ public interface Role2Interface { default String getName(){ return "李四"; } }
MyClass.javaspa
package www.muzi.com; /** * Date:2017/3/13 14:42 */ public class MyClass { public String getName(){ return "哈哈哈哈哈"; } }
SubClass.javacode
package www.muzi.com; import www.muzi.com.interfaceFun.Role2Interface; /** * Date:2017/3/13 14:43 */ public class SubClass extends MyClass implements Role2Interface { }
TestInterface.java接口
package www.muzi.com; /** * Date:2017/3/13 14:23 */ public class TestInterface{ public static void main(String[] args) { SubClass sub = new SubClass(); System.out.println(sub.getName());//哈哈哈哈哈 } }
MyClass類與接口Role2Interface共同存在getName()方法,在調用getName()方法時,調用的是MyClass類中的getName()方法,而Role2Interface接口的中getName()方法別忽略了。get
package www.muzi.com.interfaceFun; /** * Author:LiHongMei * Date:2017/3/13 14:19 */ public interface RoleInterface { int ss = 100; //默認方法 default String getName(){ return "張三"; } }
SubClass.javaclass
package www.muzi.com; import www.muzi.com.interfaceFun.Role2Interface; import www.muzi.com.interfaceFun.RoleInterface; /** * Date:2017/3/13 14:43 */ public class SubClass /*extends MyClass*/ implements Role2Interface,RoleInterface { @Override public String getName() { return RoleInterface.super.getName(); } }
TestInterface.javaimport
package www.muzi.com; /** * Date:2017/3/13 14:23 */ public class TestInterface{ public static void main(String[] args) { SubClass sub = new SubClass(); System.out.println(sub.getName());//張三 } }
Java8 中,接口中容許添加靜態方法。方法
Role2Interface.javaim
package www.muzi.com.interfaceFun; /** * Author:LiHongMei * Date:2017/3/13 14:19 */ public interface Role2Interface { default String getName(){ return "李四"; } public static void show(){ System.out.println("接口中的靜態方法"); } }
TestInterface.java
package www.muzi.com; import www.muzi.com.interfaceFun.Role2Interface; /** * Date:2017/3/13 14:23 */ public class TestInterface{ public static void main(String[] args) { Role2Interface.show();//接口中的靜態方法 } }