Java接口的定义与使用,代码讲解

/**
 * 标题:Java接口的定义与使用
 * 作者:  Nstar
 * 时间:2020年3月11日
 * 内容:
 * 问:什么是接口?怎么定义和使用?
 * 答:1.接口属于Java的引用数据类型,我们可以将其理解为特殊的抽象类
 *    2.接口可以有一个默认方法(default关键字修饰方法)并且允许有方法体(具体方法实现)
 *    3.接口可以有一个静态方法(static关键字修饰方法)并且允许有方法体(具体方法实现)
 *    4.接口可以继承一个接口,或者多个接口,语法基本和类继承一样,使用extends关键字实现
 *    5.接口的类和方法必须全抽象,默认方法和静态方法除外
 *    6.如果想使用某个接口,可以使用子类加上implements关键字加上接口名实现
 */
interface A{       //定义接口A,作为C接口的父接口
    default void spek(){     //接口A的默认方法
        System.out.println("A接口的默认方法");
    }
    static void run(){     //接口A静态方法
        System.out.println("A接口的静态方法");
    }
     abstract class Test_class{       //接口A的抽象类
           abstract void spek1();   //接口A的抽象方法
    }
}
interface B{     //定义接口B,也将其作为C接口的父接口
    default void spek_b(){     //老套路,接口默认方法,Java规定可以有方法体
        System.out.println("B接口的默认方法");
    }
    static void run_b(){       //老套路,接口静态方法,Java规定可以有方法体
        System.out.println("B接口的静态方法");
    }
    abstract class Test_class_b{     //B接口的抽象方法
        abstract void spek_b1();
    }
    interface C extends A,B{     //定义C接口,并且将继承于A和B接口,这个会将他们的所有默认方法和静态方法都继承到C接口
        //不在子接口重写父接口的抽象方法,我们把此操作放在Test_spek类进行实现重写
    }
    class Test_spek implements C{        //通过关键名字implements实现接口C
          void spek1(){     //重写接口A的抽象方法
              System.out.println("接口A抽象方法!!!");
          }
          void spek_b1(){   //重写接口B的抽象方法
              System.out.println("接口B抽象方法!!!");
          }
    }
}
public class Intface_Test1{     //测试类
    public static void main(String[] args){  //入口方法
              A.run();       //类名调用静态方法
              B.run_b();      //类名调用静态方法
              B.Test_spek ts=new B.Test_spek();
              ts.spek();       //实例调用接口默认方法
              ts.spek_b();     //实例调用接口默认方法
              ts.spek1();       //实例调用接口重写后的抽象方法
              ts.spek_b1();   //实例调用接口重写后的抽象方法

    }
}

你可能感兴趣的:(JavaSE学习笔记)