在Java中如何实现接口呢?
发布于:2018-08-02   作者:Java培训?   浏览:634次

  Java培训来介绍一下在Java语言中,接口由类来实现以便使用接口中的方法。一个类需要类声明中使用关键字implements声明该类实现个或多个接口。如果实现多个接口,用逗号隔开接口名,例如A类实现Pintable和Addable接口。

在Java中如何实现接口呢?

  classAimplementsPrintable,Addable

  再如,Animal的Dog子类实现Eatable和Sleepable接口。

  classDogextendsAninalimplementsEatable,Sleepable

  重写接口中的方法

  如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。需要注意的是,由于接口中的方法定是publicabstract方法,所以类在重写接口方法时不仅要去掉abstract修饰符、给出方法体,而且方法的访问权限一定要明显地用public来修饰(否则就降低了访问权限,这是不允许的).实现接口的非抽象类实现了该接口中的方法,即给出了方法的具体行为功能。用户也可以自定义接口,一个Java源文件可以由类和接口组成。

  下面的例子1中包含China类、Japan类和Compuable接口,而且China类和Japan类都实现了Computable接口。

  Computable.java

  publicinterfaceComputable{

  intMAX=46;

  intf(intx);

  }

  China.java

  classChinaimplementsComputable{//China类实现Computable接口

  intnumber;

  publicintf(intx){//不要忘记publie关键宇

  intsum=0;

  for(inti=0;i<=x;i++){

  sum=sum+i;

  }

  returnsum;

  }

  }

  Japan.java

  classJapanimplementsComputable{//Japan类实现Computable接口

  intnumber;

  publicintf(intx){

  returnMAX+x;//直接使用接口中的常量

  }

  }

  Example6_1.jav

  publicclassExample6_1{

  publicstaticvoidmain(Stringargs[]){

  Chinazhang;

  Japanhenlu;

  zhang=newChina();

  henlu=newJapan();

  zhang.number=32+Computable.MAX;//用接口名访问接口的常量

  henlu.number=14+Computable.MAX;

  System.out.println("zhang的学号"+zhang.number+",zhang求和结果"+zhang.f(100));

  System.out.println("henlu的学号"+henlu.number+",henlu求和结果"+henlu.f(100));

  }

  }

  如果一个类声明实现一个接口,但没有重写接口中的所有方法,那么这个类必须是抽象类,也就是说,抽象类既可以重写接口中的方法,也可以直接拥有接口中的方法,例如:

  interfaceComputable{

  finalintMAX=100;

  vo1dspeak(Strings);

  intf(intx);

  floatg(floatx,floaty);

  }

  abstractclassAimplementsComputable{

  publicintf(intx){

  intsum0:

  for(inti=1;i<=x;i++){

  sum=sum+i;

  }

  returnsum;

  }

  }

  接口的细节说明

  程序可以用接口名方问接口中的常量,但是如果个类实现了接口,那么该类可以直接在类体中使用该接口中的常量。

  定义接口时,如果关键字interface前面加上public关键字,就称这样的接口是一个public接口。public接口可以被任何一个类实现。如果一个接口不加public修饰,就称作友好接口,友好接口可以被与该接口在同一包中的类实现。

  如果父类实现了某个接口,那么子类也就自然实现了该接口,子类不必再显式地使用关键字implements声明实现这个接口,

  接口也可以被继承,即可以通过关键字extends声明个接口是另个接口的子接口。由于接口中的方法和常量都是public的,子接口将继承父接口中的全部方法和常量。

  注:Java提供的接口都在相应的包中,通过import语向不仅可以引入包中的类,也可以引入包中的接口,例如:

  importJava.io.*;

  不仅引入了java.io包中的类,同时也引入了该包中的接口。