2-2 JAVA [图形继承]

编写程序,实现图形类的继承,并定义相应类对象并进行测试。

  1. 类Shape,无属性,有一个返回0.0的求图形面积的公有方法public double getArea();//求图形面积
  2. 类Circle,继承自Shape,有一个私有实型的属性radius(半径),重写父类继承来的求面积方法,求圆的面积
  3. 类Rectangle,继承自Shape,有两个私有实型属性width和length,重写父类继承来的求面积方法,求矩形的面积
  4. 类Ball,继承自Circle,其属性从父类继承,重写父类求面积方法,求球表面积,此外,定义一求球体积的方法public double getVolume();//求球体积
  5. 类Box,继承自Rectangle,除从父类继承的属性外,再定义一个属性height,重写父类继承来的求面积方法,求立方体表面积,此外,定义一求立方体体积的方法public double getVolume();//求立方体体积
  6. 注意:
  • 每个类均有构造方法,且构造方法内必须输出如下内容:Constructing 类名
  • 每个类属性均为私有,且必须有getter和setter方法(可用Eclipse自动生成)
  • 输出的数值均保留两位小数

主方法内,主要实现四个功能(1-4):
从键盘输入1,则定义圆类,从键盘输入圆的半径后,主要输出圆的面积;
从键盘输入2,则定义矩形类,从键盘输入矩形的宽和长后,主要输出矩形的面积;
从键盘输入3,则定义球类,从键盘输入球的半径后,主要输出球的表面积和体积;
从键盘输入4,则定义立方体类,从键盘输入立方体的宽、长和高度后,主要输出立方体的表面积和体积;

假如数据输入非法(包括圆、矩形、球及立方体对象的属性不大于0和输入选择值非1-4),系统输出Wrong Format

输入格式:

共四种合法输入

  • 1 圆半径
  • 2 矩形宽、长
  • 3 球半径
  • 4 立方体宽、长、高

输出格式:

按照以上需求提示依次输出

输入样例1:

在这里给出一组输入。例如:

1 1.0

输出样例1:

在这里给出相应的输出。例如:

Constructing Shape
Constructing Circle
Circle's area:3.14

输入样例2:

在这里给出一组输入。例如:

4 3.6 2.1 0.01211

输出样例2:

在这里给出相应的输出。例如:

Constructing Shape
Constructing Rectangle
Constructing Box
Box's surface area:15.26
Box's volume:0.09

输入样例3:

在这里给出一组输入。例如:

2 -2.3 5.110

输出样例2:

在这里给出相应的输出。例如:

Wrong Format

参考代码:

import java.util.Scanner;
class Shape{
	public Shape() {
		System.out.println("Constructing Shape");
	}
	public double getArea() {
		return 0.0;
	}
}
class Circle extends Shape{
	private double radius;
	public Circle() {
		System.out.println("Constructing Circle");
	}
	public void setRadius(double radius) {
		this.radius=radius;
	}
	public double getArea() {
		return Math.PI*radius*radius;
	}

}
class Rectangle extends Shape{
	private double width;
	private double length;
	public Rectangle() {
		System.out.println("Constructing Rectangle");
	}
	public void setElement(double width,double length) {
		this.width=width;
		this.length=length;
	}
	public double getArea() {
		return width*length;
	}
}
class Ball extends Circle{
	private double radius;
	public Ball() {
		System.out.println("Constructing Ball");
	}
	public void setRadius(double radius) {
		this.radius=radius;
	}
	
	public double getArea() {
		return 4.0*Math.PI*radius*radius;
		
	}
	public double getVolume() {
		return 4.0/3.0*Math.PI*radius*radius*radius;
	}
}
class Box extends Rectangle{
	private double length;
	private double width;
	private double height;
	public Box() {
		System.out.println("Constructing Box");
	}
	public void setElements(double length,double width,double height) {	
		this.length=length;
		this.width=width;
	this.height=height;
	}
	public double getArea() {	

		return 2.0*(length*width+length*height+width*height);
	}
	public double getVolume() {
	return length*width*height;
	}
	
}
public class Main{
	public static void main(String[] args) {
		Scanner scan=new Scanner(System.in);
		int num=scan.nextInt();
		if(num==1) {
			double radius=scan.nextDouble();
			if(radius<=0)System.out.println("Wrong Format");
			else {
			Circle circle=new Circle();
			circle.setRadius(radius);
			System.out.printf("Circle's area:%.2f\n",circle.getArea());
		}}
		else if(num==2) {
			double length=scan.nextDouble();
			double width=scan.nextDouble();
			if(length<=0||width<=0)System.out.println("Wrong Format");
			else {
			Rectangle rectangle=new Rectangle();
			rectangle.setElement(width,length);
			System.out.printf("Rectangle's area:%.2f\n",rectangle.getArea());
		}}
		else if(num==3) {
			double radius=scan.nextDouble();
			if(radius<=0)System.out.println("Wrong Format");
			else {
			Ball ball=new Ball();
			ball.setRadius(radius);
			System.out.printf("Ball's surface area:%.2f\n",ball.getArea());
			System.out.printf("Ball's volume:%.2f\n",ball.getVolume());
		}}
		else if(num==4) {
			double length=scan.nextDouble();
			double width=scan.nextDouble();
			double height=scan.nextDouble();
			if(length<=0||width<=0||height<=0)System.out.println("Wrong Format");
			else {
			Box box=new Box();
			box.setElements(length,width,height);
			System.out.printf("Box's surface area:%.2f\n",box.getArea());
			System.out.printf("Box's volume:%.2f\n",box.getVolume());
		}}
		else {
			System.out.println("Wrong Format");
		}
		
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值