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();//接口中的静态方法 } }