1. 程式人生 > >Java學習(二)--接口與實現

Java學習(二)--接口與實現

sta max 抽象方法 ring end 定義 code 例如 stat

一。接口

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