接口

接口通用形式

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();
}

 

posted @ 2021-08-20 22:46  lbeaner  阅读(135)  评论(0)    收藏  举报