编写程序,使用接口及类实现多态性,类图结构如下所示:
其中:
GetArea为一个接口,无属性,只有一个GetArea(求面积)的抽象方法;
Circle及Rectangle分别为圆类及矩形类,分别实现GetArea接口
要求:在Main类的主方法中分别定义一个圆类对象及矩形类对象(其属性值由键盘输入),使用接口的引用分别调用圆类对象及矩形类对象的求面积的方法,直接输出两个图形的面积值。(要求只保留两位小数)
输入格式:
从键盘分别输入圆的半径值及矩形的宽、长的值,用空格分开。
输出格式:
如果输入的圆的半径值及矩形的宽、长的值非法(≤0),则输出Wrong Format
如果输入合法,则分别输出圆的面积和矩形的面积值(各占一行),保留两位小数。
输入样例1:
在这里给出一组输入。例如:
2 3.6 2.45
输出样例1:
在这里给出相应的输出。例如:
12.57
8.82
输入样例2:
在这里给出一组输入。例如:
9 0.5 -7.03
输出样例2:
在这里给出相应的输出。例如:
Wrong Format
import java.util.Scanner;
interface GetArea {
abstract double getArea();
}
class Circle implements GetArea {
public double radius;
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public Circle(double radius) {
}
public Circle() {
}
@Override
public double getArea() {
double area = 3.1415936535 * radius * radius;
return area;
}
}
class Rectangle implements GetArea {
public double width;
public double length;
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public Rectangle() {
}
public Rectangle(double width , double length) {
}
@Override
public double getArea() {
double area = width * length;
return area;
}
}
public class Main {
public static void main(String[] args) {
Circle circle = new Circle();
Rectangle rec = new Rectangle();
Scanner in = new Scanner(System.in);
double r = in.nextDouble();//半径
double a = in.nextDouble();//宽
double b = in.nextDouble();//长
if(r<=0||a<=0||b<=0) {
System.out.println("Wrong Format");
System.exit(0);
} else {
}
circle.setRadius(r);
rec.setWidth(a);
rec.setLength(b);
System.out.printf("%.2f\n",circle.getArea());
System.out.printf("%.2f\n",rec.getArea());
in.close();
System.exit(0);
}
}