您的位置:首页 > 编程语言 > Java开发

温习Java笔记(7):接口interface小记

2007-07-02 17:16 615 查看
对接口interface我已经仰慕已久,直到今天我才有机会去全面了解它,造化弄人,说来始终是自己的错。
Java不支持多继承,但它通过另外一种机制实现了类的继承。那就是接口interface。接口的属性都是静态常量,方法都是抽象方法,即没有给出方法体定义。接口只相当于程序开发的一组协议,凡是需要实现这种特定功能的类,都可以继承这些属性和方法的集合。
这样的接口相当于一个完全没有实现的类,但它的属性和方法被某个类继承时与类之间的继承是不同的,某个类继承一个接口实际上是实现被继承的接口中的抽象方法(编写方法体,满足该类的某种特定功能),因此它通过implements来继承一个接口,统称实现接口。

1.定义接口
接口是java的一种复合数据类型,是像类的一种结构,可看作一种没有实现的类,用关键字interface定义接口,文件名保存为接口名.java。
[public]interface接口名称[extends 父接口名列表]
{
//静态常量
[public][static][final]数据类型 变量名=常量值;
//抽象方法
[public][abstract][native]返回值类型 方法名(参数列表);
}
接口中定义的变量均为公有的、静态的、最终的常量,方法也是抽象的和公共的。

2.实现接口
[修饰符]class类名[extends 父类名][implements 接口A,接口B,...]
{
类的成员变量和成员方法;
为接口A中的所有方法编写方法体,实现接口A;
为接口B中的所有方法编写方法体,实现接口B;
}
一个类实现接口后,将继承接口中的所有静态常量,为该类所用。
一个类实现接口后,如果该类不是一个抽象类,则该类的类体中必须为接口中的所有抽象方法编写方法体,因为抽象方法不能存在于非抽象类中。从而达到继承和实现接口的目的。
如果实现接口的类是个抽象类,则接口中的抽象方法可以不被实现。

3.定义接口和实现接口举例
定义接口AreaInterface,其中有静态常量pai和求面积的抽象方法area()


//定义接口:AreaInterface.java


public interface AreaInterface




...{


double pai = Math.PI;


double area =();


}




//类Circle实现了AreaInterface接口:Circle.java


public class Circle implements AreaInterface




...{


double r;


public Circle(double x)




...{


r=x;


}


public double area() //实现接口中的抽象方法,求圆面积




...{


return pai * r * r ;


}


public String toString()




...{


retunrn "圆:r=" + r + " area=" + area();


}




}


//类Rectangle实现了AreaInterface接口:Rectangle.java


public class Rectangle implements AreaInterface




...{


double x,y;


public Rectangle(double x,double b)




...{


x=a;y=b;


}


public double area() //实现接口中的抽象方法,求圆面积




...{


return x * y ;


}


public String toString()




...{


retunrn "长方形:x=" + x + ";y=" + y +" area=" + area();


}




}


//测试实现接口后的两个类:TestInterface.java


public class TestInterface




...{


public class void main (String[] args)




...{


Rectangle R1 = new Rectangle();


Circle C1 = new Circle();




System.out.println("R1" + R1.toString() );


System.out.println("C1" + C1.toString() );


}






}





Java语言中的类库也定义了大量的接口,对键盘的击键时间专门编写了一个类KeyEvent,在java.awt.event包中。对键盘击键事件的相应,Java中专门定义了一个接口KeyListener,在相同的包中,接口中有三个抽象方法:
public abstract void keyPressed(KeyEvent); //键按下时执行
public abstract void keyReleased(KeyEvent); //键释放时执行
public abstract void keyTyped(KeyEvent); //键按下并释放后执行
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: