一。接口
使用关键字interface来定义一个接口。接口的定义和类的定义很相似,分为接口声明和接口体,例如:
interface Printable { final int Max=100; void add(); float sum(float x,float y); }
1.接口声明
定义接口包含接口声明和接口体,和类不同的是,定义接口时使用关键字interface来声明自己是一个接口,格式如下:
interface 接口的名字
2.接口体
接口体中包含常量的声明(没有变量)和抽象方法两部分。接口体中只有抽象方法,没有普通的方法,而且接口体中所有的常量的访问权限一定都是public,而且是static常量(允许省略public,final和static修饰符),所有的抽象方法的访问权限一定都是public(允许省略public abstract修饰符),例如:
interface Printable { public static final int Max=100; //等价写法:int Max=100; public abstract void add(); //等价写法:void add(); public abstract float sum(float x,float y); }
二。实现接口
1.类实现接口
在Java语言中,接口由类来实现以便使用接口中的方法。一个类需要在类声明中使用关键字implements声明该类实现一个或多个接口。如果实现多个接口,用逗号隔开接口名,例如A类实现Printable和Addable接口。
class A implements Printable,Addable
再如,Animal的Dog子类实现Eatable和Sleepable接口。
class Dog extends Animal implements Eatable,Sleepable
2.重写接口中的方法
如果一个非抽象类实现了某个接口,那么这个类必须重写这个接口中的所有方法。需要注意的是,由于接口中的方法一定是public abstract方法,所以类在重写接口方法时不仅要去掉abstract修饰符,给出方法体,而且方法的访问权限一定要明显地用public来修饰(否则就降低了访问权限,这是不允许的)。实现接口的非抽象类实现了该接口中的方法,即给出了方法的具体行为功能。
下面的例子中包含China类,Japan类和Computable接口,而且China类和Japan类都实现了Computable接口。
Computable.java
public interface Computable { int Max=46; int f(int x); }
China.java
public class China implements Computable { int number; public int f(int x) { int sum=0; for (int i=1;i<=x;i++) { sum=sum+i; } return sum; } }
Japan.java
public class Japan implements Computable { int number; public int f(int x) { return Max+x; } }
Main.java
public class Main { public static void main(String[] args) { China zhang; Japan henlu; zhang=new China(); henlu=new Japan(); 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)); } }
原文地址:https://www.cnblogs.com/godlikeyt/p/10462591.html