62,629
社区成员
 发帖
 发帖 与我相关
 与我相关 我的任务
 我的任务 分享
 分享
public abstract class Shape {
	private String name;
	public Shape(String name) {
		this.name = name;
	}
	
	public String getName() {
		return name;
	}
	public abstract double calcGrith();
	public abstract double calcAcreate();
}
public class Rect extends Shape{
	private double width;
	private double height;
	public Rect(String name, double width, double height) {
		super(name);
		this.width = width;
		this.height = height;
	}
	@Override
	public double calcAcreate() {
		return width * height;
	}
	@Override
	public double calcGrith() {
		return 2 * (width + height);
	}
	@Override
	public String getName() {
		return super.getName();
	}
}
public class Circle extends Shape{
	private double radius;
	public Circle(String name, double radius) {
		super(name);
		this.radius = radius;
	}
	@Override
	public double calcAcreate() {
		return Math.PI * radius * radius;
	}
	@Override
	public double calcGrith() {
		return Math.PI * 2 * radius;
	}
	@Override
	public String getName() {
		return super.getName();
	}
}
public class Square extends Rect{
	private double edge;	
	public Square(String name, double edge) {
		super(name, edge, edge);
		this.edge = edge;
	}
	@Override
	public double calcAcreate() {
		return edge * edge;
	}
	@Override
	public double calcGrith() {
		return 4 * edge;
	}
	@Override
	public String getName() {
		return super.getName();
	}	
}
import java.util.ArrayList;
import java.util.List;
public class Main {
	public static void main(String[] args) {
		List<Shape> shapeList = new ArrayList<Shape>();
		Shape s1 = new Rect("矩形", 20, 10);
		Shape s2 = new Circle("圆形", 10);
		Shape s3 = new Square("方形", 10);
		shapeList.add(s1);
		shapeList.add(s2);
		shapeList.add(s3);
		Shape s = null;
		for(int i=0; i<shapeList.size(); i++) {
			s = shapeList.get(i);
			System.out.println(s.getName() + "\t周长:" + s.calcGrith() + "\t面积:" + s.calcAcreate());
		}
	}
}
/*
矩形	周长:60.0	面积:200.0
圆形	周长:62.83185307179586	面积:314.1592653589793
方形	周长:40.0	面积:100.0*/