Java_接口练习题

 

 设有图形,矩形,立方体,圆,圆柱,根据自己的理解,给出它们之间的关系。

要求:

1、每种图形都有计算面积、周长、显示信息、获取图形名称的方法。

2、设计一个主方法,其功能是求n个图形(是表中图形个数的任意组合)的面积之和,运行界面如图

3、设计程序时,可以设计接口,抽象类,子类,等有关的内容,并要体现使用抽象类或者接口有什么优点?

ICalculate:

package ch11_03;

public interface ICalculate {
	
	
	public double getArea();
	public void javaOut();

}

ChangFangTi:

package ch11_03_02;

import ch11_03.ICalculate;

public class ChangFangTi implements ICalculate {
	
	private double c;//长
	private double k;//宽
	private double g;//高
	
	

	public ChangFangTi(double c, double k, double g) {
		this.c = c;
		this.k = k;
		this.g = g;
	}
	

	@Override
	public double getArea() {
		return (c*k+k*g+g+c)*2;
	}

	@Override
	public void javaOut() {
		System.out.println("长方体信息:长="+c+"  宽="+k+"  高="+g+"  面积="+getArea());

	}

}

JvXing:

package ch11_03_02;

import ch11_03.ICalculate;

public class JvXing implements ICalculate {
	
	private double c;//长
	private double k;//宽	
	
	

	public JvXing(double c, double k) {
	
		this.c = c;
		this.k = k;

	}

	@Override
	public double getArea() {
		return c*k;
	}

	@Override
	public void javaOut() {
		System.out.println("矩形信息:长="+c+"  宽="+k+"  面积="+getArea());

	}

}

Test:

package ch11_03_02;

import java.util.Scanner;

//import ch11_03.ICalculate;

public class Test {
	
	public static void show() {
		System.out.println("1.创建一个圆");
		System.out.println("2.创建一个矩形");
		System.out.println("3.创建一个长方体");
		System.out.println("4.创建一个圆柱体");
		System.out.println("5.显示已经创建的图形");
		System.out.println("6.求各图形的面积之和");
		System.out.println("7.退出系统");
		
	}
	
	public static void main(String[] args) {
		System.out.println("***图形类对象的管理***");
		System.out.println("-----------------");
		System.out.println("1.创建一个圆");
		System.out.println("2.创建一个矩形");
		System.out.println("3.创建一个长方体");
		System.out.println("4.创建一个圆柱体");
		System.out.println("5.显示已经创建的图形");
		System.out.println("6.求各图形的面积之和");
		System.out.println("7.退出系统");
		Scanner cin = new Scanner(System.in);
		double sum = 0;
		int m1=0;
		int a = 0;
		int b = 0;
		int d = 0;
		int p = 0;
		while(m1!=7) {
			m1=cin.nextInt();
			switch(m1) {
			case 1:
				double r;				
				System.out.println("请输入半径:");
				r=cin.nextDouble();
				Yuan y = new Yuan(r);
				sum += y.getArea();
				y.javaOut();
				a += 1;
				show();
				break;
			case 2:
				double c,k;
				System.out.println("请分别输入长和宽:");
				c = cin.nextDouble();
				k = cin.nextDouble();
				JvXing jx = new JvXing(c, k);
				sum += jx.getArea();
				jx.javaOut();
				b += 1;
				show();
				break;
			case 3: 
				double c1,k1,g1;
				System.out.println("请分别输入长宽高:");
				c1 = cin.nextDouble();
				k1 = cin.nextDouble();
				g1 = cin.nextDouble();
				ChangFangTi cft = new ChangFangTi(c1, k1, g1);
				sum += cft.getArea();
				cft.javaOut();
				d += 1;
				show();
				break;
			case 4: 
				double r1,h1;				
				System.out.println("请分别输入半径和高:");
				r1 = cin.nextDouble();
				h1 = cin.nextDouble();
				YuanZhuTi yzt = new YuanZhuTi(r1, h1);
				sum += yzt.getArea();
				yzt.javaOut();
				p += 1;
				show();
				break;
			case 5: 
				System.out.println("创建了"+a+"个圆形");
				System.out.println("创建了"+b+"个矩形");
				System.out.println("创建了"+d+"个长方体");
				System.out.println("创建了"+p+"个圆柱体");
				show();
				break;
			case 6:
				System.out.println("各图形面积之和="+sum);
				show();
				break;
			case 7:
				break;
			
			}
		}cin.close();
	}

	
}

Yuan:

package ch11_03_02;

import ch11_03.ICalculate;

public class Yuan implements ICalculate {
	
	private double r;
	public Yuan(double r) {
		this.r =r;
	}

	@Override
	public double getArea() {
		return Math.PI*r*r;
	}

	@Override
	public void javaOut() {
		System.out.println("圆信息:半径="+r+"  面积="+getArea());

	}

}

YuanZhuTi: 

package ch11_03_02;

import ch11_03.ICalculate;

public class YuanZhuTi implements ICalculate {
	
	private double r;//半径
	private double h;//高
	
	

	public YuanZhuTi(double r, double h) {
		this.r = r;
		this.h = h;
	}

	@Override
	public double getArea() {
		return Math.PI*r*r*2+2*Math.PI*h;
	}

	@Override
	public void javaOut() {
		System.out.println("圆柱体信息:半径="+r+"  高="+h+"  面积="+getArea());

	}

}

  • 8
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战士小小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值