默认方法在接口中定义后可以避免像定义抽象方法那样每个实现类都必须重写),默认方法在接口中定义后,实现类的对象定义后就可以调用接口的默认方法,不需要重写
    用途:
    避免多出定义实现类的时候,改写接口的方法,避免重写
    接口:

    1. package com.interfPack;
    2. public interface InterfDemo {
    3. public abstract void testMethd1();
    4. public abstract void testMethd2();
    5. public default void defaultMethod(){
    6. System.out.println("这是默认方法");
    7. }
    8. }

    实现类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、更多。。。。。