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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值