Java學習(二)--接口與實現
一。接口
使用關鍵字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)); } }
Java學習(二)--接口與實現