7-4 设计一个Shape及其子类Oval

编写一个完整的Java Application 程序。包含类Shape、类Oval、类ShapeTest,具体要求如下:
(1)编写一个抽象类Shape表示形状对象,包含以下成员
①属性:
PI:double型常数,值为3.1415926;
②方法:

  1. double area(), 抽象方法;
  2. double perimeter(),抽象方法;
    (2)编写一个Shape类的子类Oval,表示椭圆对象,包含以下成员
    ①属性:
  3. a:私有,double型,长轴半径;
  4. b:私有,double型,短轴半径;
    ②方法:
  5. Oval(double a,double b), 构造方法,用参数设置椭圆的长轴半径和短轴半径
  6. Oval(),构造方法,将椭圆的长轴半径和短轴半径都初始化为0。
  7. double area(),重写Shape类中的area方法,返回椭圆的面积( )
  8. double perimeter(),重写Shape类中的perimeter方法,返回椭圆的周长( )
  9. public String toString( ),将把当前椭圆对象的转换成字符串形式,例如长轴半径为10.0,短轴半径为5,返回字符串"Oval(a:10.0,b:5.0)"。
    (3)编写公共类Main,实现如下功能
  10. 输入长轴半径和短轴半径,并创建一个椭圆对象;
  11. 分别用area和perimeter方法,求出以上椭圆的面积和宽度并输出,输出过程中要求使用到toString方法,输出格式如下:

输入格式:

输入长轴半径和短轴半径

输出格式:

输出椭圆的面积和周长。

输入样例:

8 6

输出样例:

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

The area of Oval(a:8.0,b:6.0) is 150.79644480000002
The perimeterof Oval(a:8.0,b:6.0) is 44.42882862370954

 

import java.util.Scanner;

abstract class Shape{
	static final double PI = 3.1415926;
	
	public abstract double area();
	public abstract double perimeter();
}

class Oval extends Shape{
	private double a;
	private double b;
	public Oval(double a,double b){
		this.a = a;
		this.b = b;
	}
	public Oval(){
		this.a = 0;
		this.b = 0;
	}
	@Override
	public double area() {
		return PI * a *b;
	}

	@Override
	public double perimeter() {
		return 2 * PI * Math.sqrt((a * a + b * b) / 2);
	}
	
	public String toString(){
		return "Oval(a:" + a + ",b:" + b + ")";
	}
}

class Main{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		double a = scanner.nextDouble();
		double b = scanner.nextDouble();
		Oval oval = new Oval(a,b);
		System.out.println("The area of Oval(a:" + a + ",b:" + b + ") is " + oval.area());
		System.out.println("The perimeterof Oval(a:" + a + ",b:" + b + ") is " + oval.perimeter());
	}
}

Tips:代码仅用于参考,不要无脑复制噢!

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值