1 接口
[public] interface 接口名 [extends 父接口名列表]
{
//常量域声明,所有的属性都是常量
[public] [static] [final] 数据类型 常量名=常量值;
...
//抽象方法声明,所有的方法都是抽象方法
[public] [abstract] 返回值 方法名(参数列表)[throws 异常列表];
...
}
定义接口需要给出访问控制符,接口的访问控制符只有public和缺省两种:
public修饰的接口是公共接口,可以被所有的类和接口使用,
没有public修饰的接口只能同一个包中的其他类和接口使用。
接口由两部分组成,一部分是对接口中属性(实际是常量)的声明;另一部分是对接口中方法的声明。
接口通常就是一些抽象方法的集合。
接口的实现:
[修饰符] class 类名 [extends 父类名] [implements 接口名列表]{
//实现接口中定义的所有方法
}
2 接口的多态性和继承性
多态性:
凡是实现了某个接口的类一定包含接口中定义的方法,这样可以将所有实现了某一接口的类的对象赋予一个该接口类型的变量,当通过这个变量访问接口中定义的方法时,程序会根据变量引用的实际对象类型自动调用该对象中实现的同名方法,这是接口支持下的一种多态性。
继承性:
定义一个接口时可以通过extends关键字声明该接口时某个已经存在的父接口的子接口,它将继承父接口中的所有属性和方法。因为接口中所有方法都是抽象方法,不存在多重继承中可能带来的现实方法冲突问题。因此Java语言允许一个接口继承多个接口,形成一个父接口的列表。
3 接口与抽象类
实际上可以把接口看做由常量和抽象方法组成的特殊的抽象类。
接口与抽象类的不同:
1 接口中所有成员的访问权限都是public。
2 接口只能定义常量。
3 接口中的方法全部都是抽象方法。
4 接口可以实现多重继承。
4 接口与事件处理
想处理某类事件就必须实现该类事件所对应的XXXListener接口,由于该类事件能发生在多个事件源对象上,因此还要使用事件源对象的addXXXListener方法进行事件监听器注册。以确定某一事件源对象和某个事件监听器对象的对应关系。
5 事件适配器
通过接口完成事件处理时,要同时实现该接口中的所有方法,为了方便起见,Java语言为多于一个方法的监听器提供了适配器Adapter类。当想要使用事件处理机制时,只需让该类继承事件所对应的Adapter类,这样仅重写需要的方法即可。
6 内部类
就是在一个类中定义的另一个类,在内部的称为内部类,在外部的称为外部类。
对于于外部类处于同一个包中的其他类来说,内部类是隐藏的。内部类可以访问外部类中的所有成员,甚至包括private修饰的成员。
7 匿名内部类
内部类可以避免与其他类在命名上发生冲突。
类名只用了一次,在其他地方没有再次使用这个类名,Java语言允许在使用new语句创建对象时直接定义类体,不必为类命名,这种没有名称的类就是匿名内部类。
因为匿名内部类没有名称,因此在实例化时使用的是其继承的父类(或实现的接口)的名字,以多态的形式进行对象的赋值与执行。