java中接口(interface)

来源:互联网 发布:益购阁网络交易平台 编辑:程序博客网 时间:2024/06/05 07:14


接口是用来实现类之间的多重继承功能的结构。其主要的作用是实现类的多重继承功能(java中一个类只能有一个父类,但可以有多个接口!)

在图形界面程序中使用的ActionListener就是系统定义的一个接口,它代表了监听并处理动作事件的功能,其中包含了一个抽象方法:actionPerformed(ActionEvent e);

具体的说,如果你希望处理动作事件,就必须实现这个接口。

比如下面这段code作用既是在操作text时执行actionPerformed方法,实现控制text。

class TextAct implements ActionListener{public void actionPerformed(ActionEvent e){TextField text;int operand;text=(TextField)(e.getSource());operand=Integer.parseInt(text.getText());if(operand<0|operand>200)text.setText("输入数据越界");}}



java中声明接口的语法如下:
[public] interface 接口名 [extends 父接口名]
{
   //常量域声明;
   //抽象方法声明;  
}
需要注意的是接口的访问控制符只有public一个。
接口中的所有属性都必须是public static final(接口属性也可以没有任何修饰符,其效果完全相同);
 
implements是一个类实现一个接口用的关键字,他是用来实现接口中定义的抽象方法。比如:people是一个接口,他里面有say这个方法。public interface people(){ public say();}但是接口没有方法体。只能通过一个具体的类去实现其中的方法体。比如chinese这个类,就实现了people这个接口。 public class chinese implements people{ public say() {System.out.println("你好!");}}

implements可以实现多个接口,用逗号分开就行了。实现父类,子类不可以覆盖父类的方法或者变量。即使子类定义与父类相同的变量或者函数,也会被父类取代掉。
若同时用到 extends 和 implements 的时候,extends 必须放在 implements 关键字之前。
 
例子:
这里有一个游戏,人猿泰山。 主角是一个单独的类,这里我们主要用怪物说明接口的用法: 怪物有很多种, 按地域分:有的在天上飞,有的在地上跑,有的在水里游 按攻击方式分:有的能近距离物理攻击,有的能远距离射击


假设游戏里需要这样的几种怪——
野狗:地上移动,近距离攻击
黑熊:地上移动,近/远距离攻击
秃鹫:地上/天上移动,远距离攻击
食人鱼: 水中移动,近距离攻击
鳄鱼:地上/水中移动,近距离攻击


显然,如果我们将每一种怪物定义为一个类,那就不是面向对象的程序开 发了,我们应当使用接口:

interface OnEarth{//陆地接口 int earthSpeed;//陆地移动速度 void earthMove();//陆地移动方法 } interface OnWater{//水中接口 int waterSpeed;//水中移动速度 void waterMove();//水中移动方法 } interface OnAir{//空中接口 int airSpeed;//水中移动速度 void airMove();//水中移动方法 } interface NearAttack{//近距离攻击接口 int nearAttackPower;//近距离攻击力 void nearAttack();//近距离攻击方法 } interface FarAttack{//远距离攻击接口 int farAttackPower;//远距离攻击力 void farAttack();//远距离攻击方法 } 



这样一来,根据需求,我们可以选择性的继承接口:

class Tyke implements OnEarth, NearAttack{//野狗类 void earthMove(){//实现继承的方法1 } void nearAttack(){//实现继承的方法2 } } class BlackBear implements OnEarth, NearAttack, FarAttack{//黑熊类 void earthMove(){//实现继承的方法1 } void nearAttack(){//实现继承的方法2 } void farAttack(){//实现继承的方法3 } } class Vulture implements OnEarth, OnAir, FarAttack{//秃鹫类 void earthMove(){//实现继承的方法1 } void airMove(){//实现继承的方法2 } void farAttack(){//实现继承的方法3 } } class ManeatFish implements OnWater, NearAttack{//食人鱼类 void waterMove(){//实现继承的方法1 } void nearAttack(){//实现继承的方法2 } } class Crocodile implements OnEarth, OnWater, NearAttack{//鳄鱼类 void earthMove(){//实现继承的方法1 } void waterMove(){//实现继承的方法2 } void nearAttack(){//实现继承的方法3 } } 



 

 

 

原创粉丝点击