Java基础学习 -- 接口

  • interface是一种特殊的class,但接口的组成比类简单,主要由抽象方法(abstract可以省略,但没有方法体)和全局常量(public static final)组成。
  • 接口是纯抽象类
    • 所有的成员函数都是抽象函数;
    • 所有的成员变量都是public static final;
  • 接口是为了方便类的调用
  • 一个类如果要去实现某个接口,要加 implements 接口名
  • 一个类去继承一个接口,必须覆写它的所有方法。
  • 抽象类可以实现接口,但是接口不能继承抽象类。
  • 一个子类可以继承多个接口(这一点秒杀抽象类,一个抽象类只能被一个子类所继承,单继承局限):
    •   interface A {
    •          public static final String MSG = "hello";
    •          public abstract void print();    //接口的方法一定为抽象函数,但abstract可以省略。
    •      }
    •      interface B {
    •          public abstract void fun();     //abstract可以省略。
    •      }
    •      class X implements A,B {
    •          public void print() {
    •               System.out.println("Hi");
    •          }
    •          public void fun () {
    •              System.out.println(MSG);
    •         }
    •    public class TestDemo {
    •      public static void main (String args[]) {
    •         X x = new X();
    •         A a = x;
    •         B b = x;
    •         a.print();
    •         b.fun();
    •      }
    •   }

控制台:Hi

           hello

 

接口的定义:

  

  这两种定义都是正确的。

  在定义接口方法的时候没有使用public,那么本质上也不是default权限,而默认就是public。但是子类在覆盖该方法的时候就要加public,否则编译不通过。

  很多时候为了防止一些开发者概念不清淅,建议在定义接口方法的时候永远都写上public,但是一般都不去写abstract,所以一般喜欢这么写:

  

  注意:在抽象类中,抽象方法不能省略abstract!

posted @ 2016-10-11 13:16  zhaoxingya  阅读(329)  评论(0编辑  收藏  举报