1.求三图形的面积和周长及比较出最大的面积图形2.抽象类与接口的区别

package com.topic;

public abstract class Patterning implements Comparable<Patterning>{

	//属性
	String pencil;//画笔颜色
	boolean fill;//是否填充
	//方法
	public abstract double area();//面积
	public abstract double perimeter();//周长
	public void fi() {
		System.out.print("\t"+this.pencil);
		if(fill==false) {
			System.out.print("\t"+"无填充");
		}else {
			System.out.print("\t"+"有填充");
		}
	}//是否填充
	@Override
	public int compareTo(Patterning p) {
		if(area()>p.area()) {
			return 1;
		}else if(area()<p.area()) {
			return -1;
		}else {
			return 0;
		}
	}
	public String getPencil() {
		return pencil;
	}
	public void setPencil(String pencil) {
		this.pencil = pencil;
	}
	public boolean isFill() {
		return fill;
	}
	public void setFill(boolean fill) {
		this.fill = fill;
	}
}

package com.topic;

/**
 * 
 * title : describe:正方形
 */
public class Quadrate extends Patterning {

	double l;// 边长

	public Quadrate() {

	}

	public Quadrate(double l) {
		this.l = l;
	}

	@Override
	public String toString() {
		return "Quadrate [l=" + l + ", pencil=" + pencil + ", fill=" + fill + "]";
	}

	@Override
	public double area() {
		// 计算面积
		return l * l;
//		System.out.print("\t"+"面积:"+area);
	}

	@Override
	public double perimeter() {
		// 计算周长
		return l * 4;
//		System.out.println("\t"+"周长:"+perimeter);
	}

}

package com.topic;

/**
 * 
 * title : describe:长方形
 */
public class Ractangle extends Patterning {

	double l, w;// 长宽

	public Ractangle() {

	}

	public Ractangle(double l, double w) {
		this.l = l;
		this.w = w;
	}

	@Override
	public String toString() {
		return "Ractangle [l=" + l + ", w=" + w + ", pencil=" + pencil + ", fill=" + fill + "]";
	}

	@Override
	public double area() {
		// 面积
		return l * w;
//		System.out.print("\t"+"面积:"+area);

	}

	@Override
	public double perimeter() {
		// 周长
		return 2 * l + 2 * w;
//		System.out.print("\t"+"周长:"+perimeter);

	}


}

package com.topic;

/**
 * 
 * title : describe:圆形
 */
public class Roundness extends Patterning {

	double rad;// 半径

	public Roundness() {

	}

	public Roundness(double rad) {
		this.rad = rad;
	}

	@Override
	public String toString() {
		return "Roundness [rad=" + rad + ", pencil=" + pencil + ", fill=" + fill + "]";
	}

	@Override
	public double area() {
		// 计算面积
		return (double) Math.round(rad * rad * Math.PI * 100) / 100;
//		System.out.print("\t"+"面积:"+(double)Math.round(area*100)/100);//四舍五入保留两位小数
	}

	@Override
	public double perimeter() {
		// 计算周长
		return (double) Math.round(2 * rad * Math.PI * 100) / 100;
//		System.out.print("\t"+"周长:"+(double)Math.round(perimeter*100)/100);
	}

}

package com.topic;

public class Test {

	public static void main(String[] args) {
		Patterning[] p=new Patterning[3];
		p[0]=new Roundness(3);
		p[1]=new Ractangle(10,5);
		p[2]=new Quadrate(4);
		//圆的
		System.out.print("圆形:");
//		Roundness rou=new Roundness();
//		rou.setRad(3);
		p[0].setFill(true);
		p[0].setPencil("绿色");
		p[0].fi();
//		rou.area();
		System.out.print("\t"+"周长:"+p[0].perimeter());
		System.out.println("\t"+"面积:"+p[0].area());
//		rou.perimeter();
//		System.out.println();
//		//长方形的
		System.out.print("长方形:");
//		Ractangle rat=new Ractangle();
//		rat.setL(10);
//		rat.setW(5);
		p[1].setFill(false);
		p[1].setPencil("红色");
		p[1].fi();
//		rat.area();
//		rat.perimeter();
//		System.out.println();
		System.out.print("\t"+"周长:"+p[1].perimeter());
		System.out.println("\t"+"面积:"+p[1].area());
//		//正方形
		System.out.print("正方形:");
//		Quadrate qua=new Quadrate();
//		qua.setL(4);
		p[2].setFill(true);
		p[2].setPencil("黄色");
		p[2].fi();
//		qua.area();
//		qua.perimeter()
		p[1]=new Ractangle(10,5);
		p[2]=new Quadrate(4);
		System.out.print("\t"+"周长:"+p[2].perimeter());
		System.out.println("\t"+"面积:"+p[2].area());
		if(p[0].compareTo(p[1])==1) {
			if(p[0].compareTo(p[2])==1) {
				System.out.println("圆形的面积最大!");
			}
			else {
				System.out.println("正方形的面积最大!");
			}
		}else if(p[0].compareTo(p[1])==0){
			System.out.println("圆形和长方形的面积一样大!");
		}else if(p[0].compareTo(p[1])==0 && p[1].compareTo(p[2])==0){
			System.out.println("三个图形的面积一样大");
		}else {
			if(p[1].compareTo(p[2])==1) {
				System.out.println("长方形的面积最大!");
			}else if(p[1].compareTo(p[2])==0){
				System.out.println("长方形和正方形的面积相等!");
			}else {
				System.out.println("正方形的面积最大!");
			}
		}
	}

}

  1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
  2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
  3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
  4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。
    /但是jdk1.8之后接口里的方法也可以有静态方法和方法体了/
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值