接口
如果不会接口,别说你会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 A 再implementsB
对于接口来说,里面都是抽象方法和全局常数,所以有时候也会省略写 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.表示将服务器的远程方法视图暴露给客户端。