7-1 jmu-Java-03面向对象基础-04-形状-继承

本题描述:

定义抽象类Shape
属性:不可变静态常量double PI,值为3.14,
抽象方法:public double getPerimeter(),public double getArea()

Rectangle与Circle类均继承自Shape类。
Rectangle类(属性:int width,length)、Circle类(属性:int radius)。
带参构造函数为Rectangle(int width,int length),Circle(int radius)。
toString方法(Eclipse自动生成)
编写double sumAllArea方法计算并返回传入的形状数组中所有对象的面积和与
double sumAllPerimeter方法计算并返回传入的形状数组中所有对象的周长和。

main方法
4.1 输入整型值n,然后建立n个不同的形状。如果输入rect,则再输入长和宽。如果输入cir,则再输入半径。
4.2 然后输出所有的形状的周长之和,面积之和。并将所有的形状信息以样例的格式输出。 提示:使用Arrays.toString。
4.3 最后输出每个形状的类型与父类型.使用类似shape.getClass()(获得类型),shape.getClass().getSuperclass()(获得父类型);
注意:处理输入的时候使用混合使用nextInt与nextLine需注意行尾回车换行问题。
代码划水中。。。。。

import java.util.Scanner;
abstract class Shape{
	final double PI=3.14;
	public abstract double getPerimeter();
	public abstract double getArea();
}
class Rectangle extends Shape{
	int width,length;
	public Rectangle(int r_width,int r_length){
		width=r_width;
		length=r_length;
	}
	public double getPerimeter(){
		return (width+length)*2;
	}
	public double getArea(){
		return (width*length);
	}
    public String toString(){
		return "[width="+width+", length="+length+"]";
	} 
}
class Circle extends Shape{
	int radius;
	public Circle(int c_radius){
		radius=c_radius;
	}
	public double getPerimeter()
	{
		return (2*PI*radius);
	}
	public double getArea()
	{
		return (PI*radius*radius);
	}
    public String toString(){
		return "[radius="+radius+"]";
	} 
}
public class Main{
	public static void main(String[] args){
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		sc.nextLine();
		Shape x[]=new Shape[n];
		double sumAllArea=0,sumAllPerimeter=0;
		for(int i=0;i

好啦,差不多运行一下就可以啦,如果有优化方案,可以留下哦,祝你好运。

你可能感兴趣的:(Java的PTA作业)