接口

如果不会接口,别说你会java。

1.接口的基本定义

如果一个类中只是由抽象方法和全局常量组成。在这中情况下,不会讲其定义为抽象类,二回定义为接口。。接口就是一个抽象类,而且这个类里面只有抽象方法,构造方法都没有。

interface A {
    public static final String MSG = "Hello "  //global constant
    public abstract void print() ;  //abstract method

}

接口对象不可能直接使用new()实例化

接口必须要有子类

一个子类可以使用 implements关键字实现多个接口。

接口的子类(如果不是抽象类),必须覆写接口中的全部抽象方法。

接口的对象利用子类对象向上转型实例化操作。

范例:

interface A {
    public static final String MSG = "Hello ";  //global constant
    public abstract void print() ;  //abstract method

}
interface B{
    public abstract void get() ;
}
class X implements A,B{
    public void print(){
        System.out.println("A--print()") ;
    }
    public void get(){
        System.out.println("B--get()") ;
    }
}
public class Jiekou {
    public static void main(String arg[]){
        X x = new X() ;
        A a = x ;
        B b = x ;
        a.print() ;
        b.get() ;
    }
}

//输出结果 A--print() ;
//B--get();

如果主函数中写成

        A a = new X();
        B b = (B) a ;
        b.get() ;
        System.out.println(a instanceof A) ;
        System.out.println(a instanceof B) ;
结果是两个都是true

对于子类而言,如果他又要继承抽象类,又要实现接口的话,那么:

先extends  再implements

 

对于接口来说,里面都是抽象方法和全局常数,所以有时候也会省略写 abstract和public static final。

interface A{
    String MSG = "Hello" ;
    void fun() ;
}
但是最好写public void fun();

一个抽象类智能继承一个抽象类,接口可以继承好多个接口

interface A{
     public  void funA() ;
}
interface B{
    public void funB() ;
}
interface C extends A,B{
    public void funC() ;
}

class X implements C(){
    
}

 

一个子类只能继承一个抽象类,但是可以实现多个接口。

在java中,接口主要功能是解决单继承局限问题。

虽然从接口本省的概念上来讲只能由抽象方法和全局常量组成,但是所有的内部结构不受要求限制的,接口里面可以定义普通内部类,抽象内部类。

 

接口的内部接口,使用static修饰的时候,相当于外部接口

interface A{
    public funA() ;
   static interface B{
        public abstract void funB() ;
    }

}
class X implements A.B{
    public void funB(){
        System.out.println("Hello") ;
    }
}

 

 

总结:

接口的三大核心作用:

1.定义不同层之间的操作标准

2.表示一种操作能力

3.表示将服务器的远程方法视图暴露给客户端。

posted @ 2016-01-12 17:26  式微胡不归  阅读(163)  评论(0编辑  收藏  举报