默认方法在接口中定义后可以避免像定义抽象方法那样(每个实现类都必须重写),默认方法在接口中定义后,实现类的对象定义后就可以调用接口的默认方法,不需要重写
用途:
避免多出定义实现类的时候,改写接口的方法,避免重写
接口:
package com.interfPack;public interface InterfDemo {public abstract void testMethd1();public abstract void testMethd2();public default void defaultMethod(){System.out.println("这是默认方法");}}
实现类1:
package com.interfPack;
import com.interfPack.InterfDemo;
public class demo0 implements InterfDemo {
@Override
public void testMethd1() {
System.out.println("这是重写方法1");
}
@Override
public void testMethd2() {
System.out.println("这是重写方法2");
}
}
实现类2:
package com.interfPack;
public class demo1 implements InterfDemo {
@Override
public void testMethd1() {
System.out.println("这是另一个重写方法1");
}
@Override
public void testMethd2() {
System.out.println("这是另一个重写方法2");
}
}
调用:
package com.interfPack;
public class UseDemo {
public static void main(String[] args) {
//----------------demo0---------------------
demo0 a=new demo0(); //定义实现类对象
a.testMethd1();
a.testMethd2();
a.defaultMethod(); //调用默认方法
System.out.println("------------------------------------------");
// --------------demo1-----------------------------
demo1 b=new demo1();
b.testMethd1();
b.testMethd2();
b.defaultMethod();
}
}
默认方法特点:
1、接口的默认方法可以被实现类对象直接调用
接口:
package com.interfPack;
public interface InterfDemo {
public abstract void testMethd1();
public abstract void testMethd2();
public default void defaultMethod(){ //定义默认方法
System.out.println("这是默认方法");
}
}
实现类:
package com.interfPack;
public class demo3 implements InterfDemo {
@Override
public void testMethd1() {
}
@Override
public void testMethd2() {
}
@Override
}
调用:
package com.interfPack;
public class UseDemo {
public static void main(String[] args) {
demo3 c=new demo3();
c.defaultMethod(); //直接调用默认方法
}
}
2、接口的默认方法也可以被实现类覆盖重写;
接口:
package com.interfPack;
public interface InterfDemo {
public abstract void testMethd1();
public abstract void testMethd2();
public default void defaultMethod(){ //定义默认方法
System.out.println("这是默认方法");
}
}
实现类:
package com.interfPack;
public class demo3 implements InterfDemo {
@Override
public void testMethd1() {
}
@Override
public void testMethd2() {
}
@Override
public void defaultMethod(){ //重写默认方法
System.out.println("这是重写的默认方法");
}
}
调用:
package com.interfPack;
public class UseDemo {
public static void main(String[] args) {
//-----------------------demo3--------------------------------
demo3 c=new demo3(); //创建对象
c.defaultMethod(); //调用默认方法
}
}
3、更多。。。。。
