项目三(2)——抽象类

  1. 按照下面要求完成类的设计

(1)设计一个平面图形抽象类和一个立体图形抽象类,提供该类对象公共的方法和属性。

(2)修改项目三中第2题中所设计的球类、圆柱类,圆锥类、矩形类、三角形类、圆类,分别继承平面图形抽象类和立体图形抽象类。

(3)运行项目三中第2题中的测试方法,进行测试。

package pro4;

public class Graphic03 {
	public static void main(String[] args) {
		ball ball01=new ball("red",3);
		ball ball02=new ball("blue",4);
		square square01=new square("red",3,4);
		triangle triangle01=new triangle("blue",3,4,5);
		testGraphic t1=new testGraphic(ball01,ball02);
		testGraphic t2=new testGraphic(square01,triangle01);
		t1.compare();
		t2.printSumA();
	}
}

class testGraphic{
	private ball b1;
	private ball b2;
	private square s1;
	private triangle t1;
	public testGraphic(ball b1,ball b2){
		this.b1=b1;
		this.b2=b2;
	}
	public testGraphic(square s1,triangle t1){
		this.s1=s1;
		this.t1=t1;
	}
	public void compare(){
		if(b1.graphicV()>b2.graphicV()){
			System.out.println(b1.getColor()+"色的球体积"+b1.graphicV()+"大于"+b2.getColor()+"色的球的体积"+b2.graphicV());
		}else{
			System.out.println(b2.getColor()+"色的球体积"+b2.graphicV()+"大于"+b1.getColor()+"色的球的体积"+b1.graphicV());
		}
	}
	public void printSumA(){
		System.out.println(s1.getColor()+"色矩形和"+t1.getColor()+"色三角形面积的和:"+(s1.graphicA()+t1.graphicA()));
	}
}
abstract class LiTi{
	private String color;
	public LiTi(String color){
		this.setColor(color);
	}
	public void setColor(String color){
		this.color=color;
	}
	public String getColor(){
		return this.color;
	}
	public abstract double graphicA();
	public abstract double graphicV();
}

class ball extends LiTi{
	
	private double side01;
	public ball(String color,double side01) {
		super(color);
		this.setSide01(side01);
	}
	public void setSide01(double side01){
		this.side01=side01;
	}
	public double getSide01(){
		return this.side01;
	}
	public double graphicA(){
		return 4*3.14*side01*side01;
	}
	public double graphicV(){
		double v=3.14*3/4*side01*side01*side01;
		return v;
	}
	public void print(){
		System.out.println("颜色是"+super.getColor());
	}
}
class comuln extends LiTi{
	private double side01;
	private double side02;
	public comuln(String color,double side01,double side02) {
		super(color);
		this.setSide01(side01);
		this.setSide02(side02);
	}
	public void setSide01(double side01){
		this.side01=side01;
	}
	public void setSide02(double side02){
		this.side02=side02;
	}
	public double getSide01(){
		return this.side01;
	}
	public double getSide02(){
		return this.side02;
	}
	public double graphicA(){
		return 2*3.14*side01*side01+2*3.14*side01*side02;
	}
	public double graphicV(){
		return 3.14*side01*side01*side02;
	}
}
class cone extends LiTi{
	private double side01;
	private double side02;
	public cone(String color,double side01,double side02) {
		super(color);
		this.setSide01(side01);
		this.setSide02(side02);
	}
	public void setSide01(double side01){
		this.side01=side01;
	}
	public void setSide02(double side02){
		this.side02=side02;
	}
	public double getSide01(){
		return this.side01;
	}
	public double getSide02(){
		return this.side02;
	}
	public double graphicA(){
		return 3.14*side01*side01+3.14*side01*java.lang.Math.sqrt(side02*side02+side01*side01);
	}
	public double graphicV(){
		return 3.14/3*side01*side01*side02;
	}
}


abstract class PingMian{
	private String color;
	public PingMian(String color){
		this.setColor(color);
	}
	public void setColor(String color){
		this.color=color;
	}
	public String getColor(){
		return this.color;
	}
	public abstract double graphicA();
	public abstract double graphicL();
}
class square extends PingMian{
	private double side01;
	private double side02;
	public square(String color,double side01,double side02) {
		super(color);
		this.setSide01(side01);
		this.setSide02(side02);
	}
	public void setSide01(double side01){
		this.side01=side01;
	}
	public void setSide02(double side02){
		this.side02=side02;
	}
	public double getSide01(){
		return this.side01;
	}
	public double getSide02(){
		return this.side02;
	}
	public double graphicA(){
		return side01*side02;
	}
	public double graphicL(){
		return 2*(side01+side02);
	}
}
class triangle extends PingMian{
	private double side01;
	private double side02;
	private double side03;
	public triangle(String color,double side01,double side02,double side03) {
		super(color);
		this.setSide01(side01);
		this.setSide02(side02);
		this.setSide03(side03);
	}
	public void setSide01(double side01){
		this.side01=side01;
	}
	public void setSide02(double side02){
		this.side02=side02;
	}
	public void setSide03(double side03){
		this.side03=side03;
	}
	public double getSide01(){
		return this.side01;
	}
	public double getSide02(){
		return this.side02;
	}
	public double getSide03(){
		return this.side03;
	}
	public double graphicA(){
		return side01*(java.lang.Math.sqrt(java.lang.Math.abs(side03*side03-side01*side01))/2);
	}
	public double graphicL(){
		return side01+side02+side03;
	}
}
class circle extends PingMian{
	private double side01;
	public circle(String color,double side01) {
		super(color);
		this.setSide01(side01);
	}
	public void setSide01(double side01){
		this.side01=side01;
	}
	public double getSide01(){
		return this.side01;
	}
	public double graphicA(){
		return 3.14*side01*side01;
	}
	public double graphicL(){
		return 2*3.14*side01;
	}
}

  

转载于:https://www.cnblogs.com/hxtblogs/p/7649544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值