JAVA中的接口

一.接口的概念

    1.接口中可以规定方法的原型:方法名、参数列表以及返回类型,但不规定方法主体

    2.也可以包含基本数据类型的数据成员,但它们都默认为static和final

二.接口的作用:

    1.继承多个设计

    2.建立类与类之间的"协议":将类根据其实现功能分组用接口代表,而不必顾虑它所在的类继承层次;这样可以最大限度的利用动态绑定,隐藏实现细节;

    3.使用不同类之间的常量共享

三.接口的语法:

    1.声明格式为:interface 接口名称 [extends 父接口名]{  .....//方法的原型声明或静态常量 }

    2.接口的数据成员一定要有初值,但此值不能再更改,可以省略final关键字。

    3.接口中的方法必须是"抽象方法",不能有方法体,可以省略public及abstract关键字.

栗子:接口声明

interface Shape2D   //声明Shape2D接口
{
  final double pi = 3.14; //数据成员一定要初始化
  public abstract double area(); //抽象方法
}
interface Shape2D    //允许省略一些关键字
{
  double pi = 3.14;
  double area();
} 

四.实现接口:利用接口设计类的过程,称为接口的实现,使用implements关键字

    语法:public class 类名 implements 接口名称{  ... //实现接口的方法 }

    注意:必须实现接口中的所有方法,来自接口的方法必须声明成public

栗子:实现接口Shape2D

class Circle implements Shape2D
{
  double radius;
  public Circle(double r)
  {
    radius = r;
  }
  public double area()
  {
    return(pi*radius*radius);
  }
}
class Rectangle implements Shape2D
{
  int width,height;
  public Rectangle(int w,int h)
  {
    width=w;height=h;
  }
  public double area()
  {
    return(width*height);
  }
}

public class Test   //接口测试类
{
  public static void main(String[] args)
  {
    Rectangle rect = new Rectangle(5,6);
    System.out.println("Area of rect = " + rect.area);
    Circle cir = new Circle(5,6);
    System.out.println("Area of cir = " + cir.area);
  }
}
//运行结果: 
//          Area of rect = 30.0
//          Area of cir = 12.56
   

栗子:接口类型的引用变量

public class Test
{
  public static void main(String[] args)
  {
    Shape2D var1,var2;     // 声明接口类型的变量 , 并用它来访问对象
    var1 = new Rectangle(5,6);
    System.out.println("Area of var1 = " + var1.area());
    var2 = new Circle(2.0);
    System.out.println("Area of var2 = " + var2.area());
  }
}
//运行结果: 
//          Area of rect = 30.0
//          Area of cir = 12.56

五.实现多个接口:通过这种机制可以实现对设计的多重继承

    语法: [类修饰符] class 类名 implements 接口1,接口2.... {....}

栗子:通过实现接口达到多重继承

声明Circle类实现接口Shape2D和Color

    Shape2D具有常量pi,area()方法用来计算面积;

    Color则具有setColor方法,可用来赋值颜色;

    通过实现这两个接口,Circle类得以同时拥有着两个接口的成员,达到了对设计进行多重继承的目的

interface Shpae2D    //声明Shape2D接口
{
  final double pi = 3.14;  //数据成员一定要初始化
  public abstract double area(); //抽象方法
}
interface Color
{
  void setColor(String str);  //抽象方法
}
class Circle implements Shape2D,Color
{
  double radius;
  String color;
  public Circle(double r)
  {
    radius = r;
  }
  public double area()   //实现area()方法
  {
    return(pi*radius*radius);
  }
  public void setColor(String str)  //实现setColor()方法
  {
    color = str;
    System.out.println("color="+color);
  }
}
public class Test  {
  public static void main(String[] args)
  {
    Circle cir;
    cir = new Circle(2.0);
    cir.setColor("blue");
    System.out.println("Area = "+ cir.area() );  //结果:color=blue Area=12.56
  }
}

六.接口的扩展

    1.实现一个接口的类也必须实现其超接口中的方法

    2.接口扩展的语法

      interface 子接口的名称 extends 超口的名称1,超口的名称2... { ... } 

栗子:接口的扩展

interface Shape
{
  double pi = 3.14;
  void setColor(String str);
}
interface Shape2D extends Shape//声明Shape2D接口继承了Shape接口
{ 
  double area();
}
class Circle implements Shape2D
{
  double radius;
  String color;
  public Circle(double r)
  {
    radius = r;
  }
  public double area()   //实现area()方法
  {
    return(pi*radius*radius);
  }
  public void setColor(String str)  //实现setColor()方法
  {
    color = str;
    System.out.println("color="+color);
  }
}
public class Test
{
  public static void main(String[] args)
  {
    Circle cir;
    cir = new Circle(2.0);
    cir.setColor("blue");
    System.out.println("Area = "+ cir.area() );  //结果:color=blue Area=12.56
  }
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值