使用继承机制,分别设计实现抽象基类图形类,派生类圆形类、正方形类、长方形类
基类
并且设计Comparable接口,接口中设计compareTo()方法,用来比较对象。此方法的返回值类型设计为int类型。此方法接收一个参数,参数类型为图形类。
提示:比较对象时,可以将compareTo()方法的返回值设置为1、0、-1,来代表比较结果,当前对象大、两者相等或者当前对象小
public abstract class Graph implements Comparable{
public abstract double area();
public abstract double girth();
@Override
public int compareTo(Graph graph) {
if(this.area()>graph.area()){
return 1;
}else if (this.area()<graph.area()) {
return -1;
}else {
return 0;
}
}
}
圆类
public class Circle extends Graph{
private double raidus;
public Circle(double d) {
// TODO Auto-generated constructor stub
this.raidus=d;
}
public double getRaidus() {
return raidus;
}
public void setRaidus(double raidus) {
this.raidus = raidus;
}
@Override
public double area() {
// TODO Auto-generated method stub
return Math.PI*raidus*raidus;
}
@Override
public double girth() {
// TODO Auto-generated method stub
return Math.PI*raidus*2;
}
}
正方形
public class Square extends Graph{
private double length;
public Square(double d) {
this.length=d;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
@Override
public double area() {
// TODO Auto-generated method stub
return length*length;
}
@Override
public double girth() {
// TODO Auto-generated method stub
return length*4;
}
}
长方形
public class Rectangle extends Graph{
private double length;
private double width;
public Rectangle(double d, double e) {
this.length=d;
this.width=e;
}
public double getLength() {
return length;
}
public void setLength(double length) {
this.length = length;
}
public double getWidth() {
return width;
}
public void setWidth(double width) {
this.width = width;
}
@Override
//计算面积
public double area() {
// TODO Auto-generated method stub
return length*width;
}
@Override
public double girth() {
// TODO Auto-generated method stub
return 2*(length+width);
}
}
测试类一
//使用多态的形式实例化图形类
public class TestGraph {
public static void main(String[] args) {
Graph circle=new Circle(3.0);
Graph square=new Square(4.0);
Graph rectangle=new Rectangle(3.0,4.0);
System.out.println("圆的面积"+circle.area());
System.out.println("圆的周长"+circle.girth());
System.out.println("正方形的面积"+square.area());
System.out.println("正方形的周长"+square.girth());
System.out.println("长方形的面积"+rectangle.area());
System.out.println("长方形的周长"+rectangle.girth());
}
}
测试类二
public class TestGraphs {
public static void main(String[] args) {
Graph[] gra=new Graph[10];
for (int i = 0; i < 3; i++){
Circle circle=new Circle(2.0+i);
gra[i]=circle;
}
for (int i = 3; i < 7; i++) {
Square square=new Square(3.0+i);
gra[i]=square;
}
for (int i = 7; i < 10; i++) {
Rectangle rectangle=new Rectangle(3.0+i, 4.0+i);
gra[i]=rectangle;
}
Graph max=gra[0];
for (int i=0;i<gra.length;i++){
if (gra[i].area()>max.area()) {
max=gra[i];
}
}
System.out.println(max.area());
}
}