Description |
先定義一個接口IGetArea,有一個方法computeArea,有一個常量PI爲3.14。 |
Input |
第一行輸入數據的組數N,然後有N組數據。每組數據由幾個整型數組成,第一個是圖形類型,0表示Circle,1表示Rectangle;而後如果前面是0,後面跟一個浮點,如果是1後面跟兩個浮點。 |
Output |
圖形類型及其面積(精度保留2位)。 |
Sample Input |
4 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());
}
}
}
}
}
測試數據: