0
点赞
收藏
分享

微信扫一扫

Java系列(16)——接口


本系列博客汇总在这里:Java系列_汇总


目录

  • ​​一、什么是接口​​
  • ​​二、接口的继承和实现​​
  • ​​三、接口的应用​​
  • ​​四、接口的好处​​
  • ​​五、接口和抽象类的区别​​

一、什么是接口

  1. 当一个抽象类中的所有方法都是抽象的,那么我们就可以把它定义为一个接口,接口是对行为的抽象;抽象类是对属性和行为的抽象。

  2. 接口定义的只是一种规范,是一种行为的抽象,就是说我给你定义好方法名,返回值类型,参数类型及个数。我不管怎么实现,到类里边才具体实现。

  3. 语法

    interface 接口名
    {
    方法的定义;
    }
  4. 示例

    interface TeacherService
    {
    //在接口中每一个方法的定义都是抽象的,可以省略abstract
    public void teaching();//抽象方法
    public void eating();//抽象方法

    //在接口中定义的都是常量
    //int AGE = 8;应该写为如下:
    public final static int AGE = 8;

    //接口同抽象类相似,接口中的方法不能和private,static,final共存
    //private void eating();错误
    //public final void eating();错误
    //public static void eating();错误
    }
    class JavaTeacher implements TeacherService
    {
    public void teaching()
    {
    System.out.println("张三在上课");
    }

    public void eating()
    {
    System.out.println("李四在吃东西");
    }
    }
    class Welcome
    {
    public static void main(String[] args)
    {
    JavaTeacher jt = new JavaTeacher();
    jt.teaching();
    jt.eating();

    System.out.println("--------------------通过实例来访问-----------------------------");
    System.out.println(jt.AGE);
    System.out.println("--------------------通过接口名来访问-----------------------------");
    System.out.println(TeacherService.AGE);
    }
    }

    Java系列(16)——接口_抽象类

  5. 接口中可以定义属性(常量),可以通过接口来实现类的实例来访问,还可以通过接口名来访问(推荐使用), 接口中的属性不能修改,我们接口中的属性默认都是使用final static修饰的 。通常在接口中来定义属性把它作为常量,常量的名字规范是单词大写。而且多个单词之间用下划线俩分隔。比如:PI。

  6. 接口可以继承接口(单继承和多继承,多级继承)。

二、接口的继承和实现

  • 示例
  • //定义接口A
    interface A
    {
    public void method();
    }

    //定义接口B
    interface B
    {
    public void method1();
    }

    //定义接口C继承于A
    interface C extends A
    {
    public void method2();
    }

    //定义接口D继承于C
    interface D extends C
    {

    }

    //定义类Test实现接口DB
    class Test implements D,B
    {
    //由于C继承A,D又继承C,所以在实现接口D的时候,就需要实现接口ADC里面的所有抽象方法;B单独处理
    public void method()
    {
    }

    public void method1()
    {
    }

    public void method2()
    {
    }
    }
    //主类
    class Welcome
    {
    public static void main(String[] args)
    {
    }
    }

三、接口的应用

  • 范例:使用接口方式计算圆和正方形的面积和周长,见程序需要透彻理解!
  • //定义接口CalInter
    interface CalInter
    {
    /*
    *定义计算面积的方法
    */
    public double getArea(double r);
    /*
    *定义计算周长的方法
    */
    public double getLength(double r);
    /*
    *定义圆周率常量
    */
    public final static double PI = 3.14;
    }

    //使用类Circle实现接口CalInter
    class Circle implements CalInter
    {
    /**
    *定义圆的属性半径
    */
    private double r;

    /**
    *定义圆有参数的构造器
    */
    public Circle(double r)
    {
    this.r = r;
    }

    /**
    *提供一个对外访问r的方法
    */
    public double getR()
    {
    return r;
    }

    /**
    * 实现接口的所有方法
    */
    public double getArea(double r)
    {
    return r*r*CalInter.PI;
    }

    public double getLength(double r)
    {
    return 2*r*CalInter.PI;
    }
    }

    //主类
    class Welcome
    {
    public static void main(String[] args)
    {
    Circle c = new Circle(2);
    //获得半径
    double r = c.getR();
    //计算面积
    double area = c.getArea(r);
    double length = c.getLength(r);
    System.out.println("半径是"+r+"的圆的面积是"+area);
    System.out.println("半径是"+r+"的圆的周长是"+length);
    }
    }
  • Java系列(16)——接口_抽象方法_02

四、接口的好处

  1. 接口定义的是一种标准,可以使我们的代码分层开发,分模块开发。
  2. 降低代码的耦合度,提高代码的可扩展性和可维护性。
  3. 接口改进的单继承的局限性。

五、接口和抽象类的区别

  1. 接口的所有方法都是抽象的,抽象类里面的方法可以是抽象的也可以是不抽象的。
  2. 接口和抽象类都不能实例化,接口需要类来实现后实例化实现类,抽象类需要类来继承后实例化子类。
  3. 抽象类只能单继承,接口可以多继承接口(jdk1.7),接口还可以多实现。
  4. 接口中的属性是 static final 类型的,抽象类中的属性跟普通类中的属性没有区别。
  5. 接口中的方法默认就是抽象的不需要加 abstract,抽象类中的抽象方法需要加 abstract 关键字。

如有错误,欢迎指正!



举报

相关推荐

0 条评论