接口
接口通用形式
access interface name { return-type method-name1(parameter-list); return-type method-name2(parameter-list); type final-varname1 = value; type final-varname2 = value; // ... return-type method-nameN(parameter-list); type final-varnameN = value; }
access:public或者没有修饰符。
name:接口名,可以是任何合法的标识符。
接口声明中可以声明变量,一般是final和static型的,因此实现类中不能修改变量的值,必须以常量值初始化。当接口本身定义成public时,所有其方法和变量都是public的。
每个包含接口的类必需实现所有的方法。
接口的实现
access class classname [extends superclass] [implements interface [,interface...]] { // class-body }
规范:
1.access为public或无修饰符
2.如果一个类实现多个接口,这些接口将被逗号分隔。
3.实现接口的方法必须是public的
4.实现方法的类型必须与接口定义中指定的类型匹配。
5.类在实现接口时可以定义它自己的成员。
例子:
1.声明一个callback接口
interface Callback { void callback(int param); }
2.实现callback接口
class Client implements Callback { // Implement Callback’s interface public void callback(int p) { System.out.println(“callback called with “ + p); } void nonIfaceMeth() { System.out.println(“Classes that implement interfaces “ + “may also define other members, too.”); } }
如果一个类包含一个接口但是不完全实现接口定义的方法,那么该类必须定义成 abstract型。
例子:
abstract class Incomplete implements Callback { int a, b; void show() { System.out.println(a + " " + b); } }
可见上面的代码并未实现Callback接口的方法,这样做必须定义类为抽象类,
任何继承Incomplete 的类都必须实现callback( )方法或者它自己定义成abstract类。
接口的扩展:
interface A { void meth1(); void meth2(); } interface B { void meth3(); }

浙公网安备 33010602011771号