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


    对接口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); //键按下并释放后执行

你可能感兴趣的:(温习Java笔记(7):接口interface小记)