Java 接口的使用

Description

先定義一個接口IGetArea,有一個方法computeArea,有一個常量PI爲3.14。 
 然後定義一個實現該接口的Circle類,有double類型的半徑屬性。  
 再定義一個實現該接口的Rectangle類,有double類型的長和寬屬性。  
 要求Main方法中至少包含如下代碼(這些語句不要求必須放在一起): 
 IGetArea iga; 
 iga=new Circle(r); 
 iga=new Rectangle(a,b);  
 iga.computeArea();


Input
第一行輸入數據的組數N,然後有N組數據。每組數據由幾個整型數組成,第一個是圖形類型,0表示Circle,1表示Rectangle;而後如果前面是0,後面跟一個浮點,如果是1後面跟兩個浮點。
Output
圖形類型及其面積(精度保留2位)。
Sample Input

0 10 
1 20 10 
1 5 4 
0 20
Sample Output
Circle:314.00
Rectangle:200.00
Rectangle:20.00
Circle:1256.00

首先,是對接口的定義格式:

[修飾符] interface 接口名稱 ([extends 父接口名稱])

{

    [public] [static] [final] 數據類型 變量名   =    常量值;

    [public] [abstract] 返回值類型  方法名  (參數列表);

    ......;

}


然後,是用類實現接口:

對接口的實現是通過類的繼承來實現的,用關鍵字 implements 來繼承接口,

並且接口中的方法均用 public 修飾,所以在重寫方法時也要用 public 修飾,如下:

[修飾符] class  類名([extends 父類名])[implements 接口A,接口B...]

{

    類成員變量和方法;

    爲接口A中的所有方法編寫方法體,是現接口A;

    ......;

}

一個類只能繼承一個父類,但是可以同時繼承多個接口;在類體中,需要對繼承的接口的所有的方法進行實現。

代碼如下:

import java.util.*;
interface IGetArea     //實現接口;
{
    public double computeArea();
    public static final double PI = 3.14;
}
class Circle implements IGetArea  //繼承接口;
{
    double radium;
    public Circle (double radium)
    {
        this.radium = radium ; 
    }
    public double computeArea()   //重寫接口A的方法,要用 public 修飾;
    {
        return PI*radium*radium ;
    }
}
class Rectangle implements IGetArea
{
    double m,n;
    public Rectangle (double m,double n)
    {
        this.m = m ; 
        this.n = n ; 
    }
    public double computeArea()
    {
        return m*n ; 
    }
}
public class Main {
    public static void main(String args[]){
        Scanner cin = new Scanner(System.in);
        int t,k,i;
        double r,a,b;
        while(cin.hasNext())
        {
            t = cin.nextInt();
            for(i=0;i<t;i++)
            {
                k = cin.nextInt();
                IGetArea iga;
                if(k==0)
                {
                    r = cin.nextDouble();
                     iga=new Circle(r); 
                     System.out.printf("Circle:%.2f\n",iga.computeArea());
                }
                if(k==1)
                {
                    a = cin.nextDouble();
                    b = cin.nextDouble();
                    iga=new Rectangle(a,b);  
                    System.out.printf("Rectangle:%.2f\n",iga.computeArea());
                }
            }
        }
    }
}

測試數據:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章