Description |
先定義一個抽象Graphic類,有求面積的computeArea抽象方法(返回值爲面積,圓周率取3.14); 然後定義一個從Graphic派生的Circle類,有double類型的半徑,以及重寫的computeArea抽象方法。 再定義一個從Graphic派生的Rectangle類,有double類型的長和寬屬性,以及重寫的computeArea抽象方法。 要求main方法中至少包含如下代碼(這些語句不要求必須放在一起): Graphic g; g=new Circle(r); g=new Rectangle(a,b); g.computeArea(); |
Input |
第一行輸入數據的組數N,然後有N組數據。每組數據由一個字符和幾個浮點數組成,第一個如何是'c'表示Circle,是'r'表示Rectangle;如果前面是'c',後面跟一個浮點,如果是'r'後面跟兩個浮點。 |
Output |
圖形類型及其面積(精度保留2位)。 |
Sample Input |
4 c 10 r 20 10 r 5 4 c 20 |
Sample Output |
Circle:314.00 Rectangle:200.00 Rectangle:20.00 Circle:1256.00 |
abstract 修飾方法:
abstract + 數據類型 + 方法名(參數);
父類派生出子類後,子類再對繼承父類的抽象的方法進行定義。抽象方法一定不能用final定義。
import java.util.*;
abstract class Graphic
{
public abstract double computeArea();
}
class Circle extends Graphic
{
private double radius ;
public Circle(double radius)
{
this.radius = radius;
}
public double computeArea()
{
return 3.14*radius*radius;
}
}
class Rectangle extends Graphic
{
private double length;
private double kuan;
public Rectangle(double length,double kuan)
{
this.kuan = kuan;
this.length = length;
}
public double computeArea()
{
return length*kuan ;
}
}
public class Main {
public static void main(String args[]){
Scanner cin = new Scanner(System.in);
int t,i;
String x;
double r,a,b;
while(cin.hasNext()){
t = cin.nextInt();
for(i=0;i<t;i++)
{
x = cin.next();
if(x.charAt(0)=='c')
{
r = cin.nextDouble();
Graphic g;
g=new Circle(r);
System.out.printf("Circle:%.2f\n",g.computeArea());
}
if(x.charAt(0)=='r')
{
a = cin.nextDouble();
b = cin.nextDouble();
Graphic g;
g=new Rectangle(a,b);
System.out.printf("Rectangle:%.2f\n",g.computeArea());;
}
}
}
}
}
測試數據: