zoukankan      html  css  js  c++  java
  • Java学习之接口概念

      Java语言只支持单重继承,不支持多继承,即一个类只能有一个父类。但是在实际应用中,又经常需要使用多继承来解决问题。为了解决该问题,Java语言提供接口来实现类的多继承问题。

      接口(英文interface),,在Java 编程语言中是一个抽象类型,是抽象方法的集合,接口通常以 interface 来声明,一个类通过继承接口的方式,,从未来继承接口的抽象方法。接口并不是类,创建接口的方式和类很相似,但是他们属于不同的概念,类描述对象的属性和方法,接口则包含要实现的方法。除非实现接口的类是抽象类,否则该实现类要重写接口中所有方法。接口无法被实例化,但可以被实现,一个实现接口的类,必须实现接口内描述的所有方法。否则就必须声明为抽象类。另外,在Java中,接口类型可以用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象

    1.接口的定义

      使用interface来定义一个接口。接口定义与类的定义相似,也是分为接口的声明和接口体,其中接口体由变量定义和方法定义两部分组成。定义接口的基本语法格式如下:

      [修饰符]interface  接口名  [extends  父接口名列表]{       

          [public] [static] [final]  变量;             

          [public] [abstract]   方法;                      

        }                                                                                        

    参数 说明
       修饰符 可选参数,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限
       接口 必选参数,用于指定接口的名称,接口名必须是合法的Java标识符,一般情况下,要求首字母大写
       extends父接口名列表 可选参数,用于指定要定义的接口继承于哪个接口。当使用extends关键字时,父接口名为必选参数
     方法     接口中的方法只有定义而没有实现

    定义一个用于计算的接口,在该接口中定义一个常量PI 和两个方法。

    public interface CalculateInface {
      public static final double PI = 3.14159; //定义用于表示圆周率的常量PI

      public double getCircumference(double r); //定义一个用于计算周长的方法

      public double getArea(double r); //定义一个用于计算面积的方法
    }

    注意: 与Java 类文件一样,接口文件的文件名必须与接口名相同。

    2.接口的实现

    接口在定义后,就可以在类中实现该接口。在类中实现接口可以使用 implements 关键字,基本语法格式如下:

      [修饰符] class <类名>  [extends  父类名] implements  接口列表{                                      

      }                                                                                                                                   

    实现接口的语法格式的参数说明:

    参数 说明
       修饰符   可选参数,用于指定类的访问权限,可选值为public、abstract 和 final
       类名   必选参数,用于指定类的名称,类名必须是合法的Java标识符,一般情况下,要求首字母大写
       extends父类名列表   可选参数,用于指定要定义的类继承于哪个父类。当使用extends关键字时,父类名为必选参数
     implements接口列表   当接口列表中存在多个接口名时,各个接口之间是用逗号分隔

      在类中实现接口时,方法名、返回值类型、参数的个数及类型必须与接口中的完全一致,并且必须实现接口中的所有方法。

      编写一个Circle的类,实现上文定义的接口 CalculateInface 。

    public class Circle implements CalculateInface{

      public double getCircumference(double r) {
      double circumference = 2*PI*r ; //计算圆周长并返回
      return circumference;
      }

      public double getArea(double r) { //计算圆的面积并返回
      double area = PI*r*r ;
      return area;
      }
    }

      在类的继承中,只能做单重继承,而实现接口时,一次则可以实现多个接口,每个接口间使用逗号“,”分隔,这是就可能出现变量或方法冲突的情况。解决该问题时,如果变量冲突,则需要明确指定变量的接口,可以通过“接口名.变量”实现。如果出现方法冲突,则只要实现一个方法即可。

    接口与类相似点:

    • 一个接口可以有多个方法。
    • 接口文件保存在以.java 结尾的文件中。
    • 接口的字节码文件保存在以.class 结尾的文件中。
    • 接口相应的字节码文件必须在与包名称相匹配的目录中。

    接口与类的区别:

    • 接口不能用于实例化对象。
    • 接口没有构造方法。
    • 接口中的方法必须全是抽象方法。
    • 接口不能包含成员变量,除了static 和 final 变量。
    • 接口不是被类 继承,而是要被类 实现。
    • 接口支持多继承(包括被类或接口)。

    接口的特性 :

    • 接口中每一个方法都是隐式抽象的,接口中的方法会被隐式指定为 public  abstract(只能是 public  abstract,其他的修饰符都会报错)。
    • 接口中可以含有变量,但是变两个会被隐式的指定为public  static final 变量(并且只能是 public,若用private  会编译报错的)。
    • 接口中的方法是不能在接口中实现的,只能由实现的接口的类来实现接口中的方法

     

  • 相关阅读:
    zoj 3593 One Person Game
    poj 2115 C Looooops
    hdu 1576 A/B
    hdu 2669 Romantic
    poj1006 Biorhythms
    中国剩余定理(孙子定理)
    Pseudoprime numbers---费马小定理
    青蛙的约会----POJ1061
    [POJ2942]:Knights of the Round Table(塔尖+二分图染色法)
    [BZOJ1718]:[Usaco2006 Jan] Redundant Paths 分离的路径(塔尖)
  • 原文地址:https://www.cnblogs.com/sdlzspl/p/7216872.html
Copyright © 2011-2022 走看看