C.抽象类

C.抽象类
Time Limit: 1000 MS Memory Limit: 32768 K
Total Submit: 58 (42 users) Total Accepted: 41 (39 users) Special Judge: No
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





import java.util.*;


class Graphic
{
double r;
double pi = 3.14;
double chang,kuan;
Graphic(double r)
{
this.r = r;
}
Graphic(double chang,double kuan)
{
this.chang = chang;
this.kuan = kuan;
}
public double computeArea() {
// TODO Auto-generated method stub
return pi*r*r;
}
public double computeArea1() {
return chang*kuan;
}
}


class Circle extends Graphic
{
double pi = 3.14;
Circle(double r) {
super(r);
// TODO Auto-generated constructor stub
}
}


class Rectangle extends Graphic
{


Rectangle(double chang,double kuan) {
super(chang,kuan);
// TODO Auto-generated constructor stub
}

}


public class Main {


public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
int t = input.nextInt();
while(t>0)
{
String s = input.next();
char c = s.charAt(0);
Graphic g;
if(c == 'c')
{
int r = input.nextInt();
g=new Circle(r);
double qwe = g.computeArea();
System.out.printf("Circle:%.2f\n",qwe);
}
else if(c == 'r')
{
double a = input.nextDouble();
double b = input.nextDouble();
g=new Rectangle(a,b);
double asd = g.computeArea1();
System.out.printf("Rectangle:%.2f\n",asd);
}
t--;
}
}
}


猜你喜欢

转载自blog.csdn.net/wonder__/article/details/80108078