组合和继承JAVA习题

文章提供了两种实现方式计算圆柱体的表面积和体积,一种通过类的继承,另一种采用组合。在继承方式中,圆柱体类Cylinder继承自圆类Circle,重写获取表面积和体积的方法。在组合方式中,Cylinder类包含一个Circle对象作为底圆,同样提供计算表面积和体积的方法。两种方法都需要用户输入圆柱的底面半径和高度,然后输出结果,保留两位小数。
摘要由CSDN通过智能技术生成

计算圆柱体的表面积和体积

【问题描述】
计算圆柱体的表面积和体积(用继承来实现)

实现思路:

   (1)定义一个圆类Circle,它有半径radius及获取面积和周长的相关方法

   (2)定义一个圆柱类Cylinder,它继承自父类Circle,还拥有柱高height及获取表面积和周长的相关方法

    定义主类,在主类中创建Cylinder对象,计算并显示其表面积和体积。

【输入形式】

   两个浮点数用空隔隔开,分别表示圆柱的底圆的半径、圆柱体的高

【输出形式】

   第一行圆柱的表面积

   第二行圆柱的体积

【样例输入】

   1 2   

【样例输出】

   18.85

   6.28  

【样例说明】输出保留两位小数

实现提示:

一、编写一个圆类Circle,该类拥有:

(1)一个成员变量

   radius         //存放圆的半径;私有,浮点型

(2)两个构造方法

   Circle( )            //将半径设为0

   Circle(doubler  r)   //将半径初始化为r

(3)三个成员方法

   double getArea( )       //获取圆的面积

   double getPerimeter( )   //获取圆的周长

二、编写一个圆柱体类Cylinder,它继承于上面的Circle类。还拥有:

(1)一个成员变量

   double height   //圆柱体的高;私有,浮点型

(2)构造方法

   Cylinder (double r, double  h )   //初始化半径为r,高为h

(3)成员方法

   double getArea( )          //获取圆柱体的表面积

   double getVolume( )        //获取圆柱体的体积

三、编写主类程序,输入圆柱的底圆的半径、圆柱体的高,计算并显示圆柱的表面积和圆柱体的体积

//Main类
import java.util.Scanner;
public class Main {

	public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         double r, h;
         r =  scanner.nextDouble();
         h =  scanner.nextDouble();
         Cylinder c = new  Cylinder(r, h);
         System.out.printf("%.2f\n",c.getArea());
         System.out.printf("%.2f",c.getVolume());
	}

}
//Circle类
public class Circle {
    private double radius;
	public Circle() {
		this.radius = 0;
	}
	public Circle(double r) {
		this.radius = r;
	}
	public double getArea(){
		return Math.PI * radius * radius;
	}
	public double getPerimeter(){
		return 2 * Math.PI * radius;
	}
	public void setRadius(double r){
		this.radius = r;
	}
	public double getRadius(){
		return  this.radius;
	}
}
// Cylinder类
public class Cylinder extends Circle {
       private double height;
	public Cylinder(double r, double h) {
		setRadius(r); //或者super(r);
		this.height = h;
	}
	public double getVolume(){
		return Math.PI * getRadius() * getRadius() * height;
              //或者 return super.getArea() * height;
	}
	public double getArea(){
		return 2 * Math.PI * getRadius() * getRadius() + 2 * Math.PI * getRadius() * height;
              //或者	return 2 * super.getArea() + super.getPerimeter() * height;
	}
}

B)计算圆柱体的表面积和体积

【问题描述】计算圆柱体的表面积和体积(用组合来实现)

实现思路:

   (1)定义一个圆类Circle,它有半径radius及获取面积和周长的相关方法

   (2)定义一个圆柱类Cylinder,它包含一个底circle(圆)和柱高height两个成员变量及获取表面积和周长的相关方法

   定义主类,在主类中创建Cylinder对象,计算并显示其表面积和体积。

【输入形式】

   两个浮点数用空隔隔开,分别表示圆柱的底圆的半径、圆柱体的高

【输出形式】

   第一行圆柱的表面积

   第二行圆柱的体积

【样例输入】

   1 2

【样例输出】

   18.85

   6.28

【样例说明】输出保留两位小数
【评分标准】

实现提示:

一、编写一个圆类Circle,该类拥有:

(1)一个成员变量

   radius         //存放圆的半径;私有,浮点型

(2)两个构造方法

   Circle( )            //将半径设为0

   Circle(doubler  r)   //将半径初始化为r

(3)三个成员方法

   double getArea( )       //获取圆的面积

   double getPerimeter( )   //获取圆的周长

二、编写一个圆柱体类Cylinder,它组合了Circle类:

(1)两个成员变量

   Circle  circle   //圆柱体的底圆,私有

   double height    //圆柱体的高;私有,浮点型

(2)构造方法

   Cylinder (Circle c, double  h )   //初始化底圆为c,高为h

(3)成员方法

   double getArea( )          //获取圆柱体的表面积

   double getVolume( )        //获取圆柱体的体积

三、编写主类程序,输入圆柱的底圆的半径、圆柱体的高,计算并显示圆柱的表面积和圆柱体的体积

//Main类
public class Main {
	public static void main(String[] args) {
         Scanner scanner = new Scanner(System.in);
         double r, h;
         r =  scanner.nextDouble();
         h =  scanner.nextDouble();
         Circle  c = new Circle(r);
         Cylinder cy = new  Cylinder(c, h);
         System.out.printf("%.2f\n",cy.getArea());
         System.out.printf("%.2f",cy.getVolume());
	}
}
//Circle类
public class Circle {
    private double radius;
	public Circle() {
		this.radius = 0;
	}
	public Circle(double r) {
		this.radius = r;
	}
	public double getArea(){
		return Math.PI * radius * radius;
	}
	public double getPerimeter(){
		return 2 * Math.PI * radius;
	}
	public void setRadius(double r){
		this.radius = r;
	}
	public double getRadius(){
		return  this.radius;
	}
}
//Cylinder类 
public class Cylinder {  
	private Circle circle;  
       private double height;
	public Cylinder(Circle c, double h) {
	       circle = c;
		height = h;
	}
	public double getVolume(){
		return Math.PI * circle.getRadius() * circle.getRadius() * height;
              //或者 return circle.getArea() * height;
	} 
	public double getArea(){
		return 2 * Math.PI * circle. getRadius() * circle. getRadius() + 2 * Math.PI * circle. getRadius() * height;
              //或者 return 2 * circle.getArea() + circle. getPerimeter() * height;
	}
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值