Graphcs.java
package com.graphics;
/**
*
* @ClassName: Graphics
* @Description:抽象图形类
* @author lye
* @date 2019年9月25日
*
*/
public abstract class Graphics implements Comparable{
/*
* 定义两个抽象方法
*/
public abstract double area();
public abstract double girth();
@Override
public int compareTo(Graphics graphics) {
//重新comparato方法
if(this.area()>graphics.area()){
return 1;
}else if(this.area()<graphics.area()){
return 1;
}else{
return 0;
}
}
}
Circle.java
package com.graphics;
/**
*
* @ClassName: Circle
* @Description:圆类继承抽象类
* @author lye
* @date 2019年9月27日
*
*/
public class Circle extends Graphics{
private double raidus;
public Circle(double raidus) {
super();
this.raidus = raidus;
}
public double getRadius() {
return raidus;
}
public void setRadius(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 2*Math.PI*raidus;
}
}
Rectangle.java
package com.graphics;
/**
*
* @ClassName: Rectangle
* @Description:长方形类继承抽象类
* @author lye
* @date 2019年9月27日
*
*/
public class Rectangle extends Graphics{
private double length;
private double width;
public Rectangle(double length, double width) {
super();
this.length = length;
this.width = width;
}
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() {
return length*width;
}
@Override
public double girth() {
// TODO Auto-generated method stub
return (length+width)*2;
}
}
Square.java
package com.graphics;
/**
*
* @ClassName: Square
* @Description:正方形类继承抽象类
* @author lye
* @date 2019年9月27日
*
*/
public class Square extends Graphics{
private double side;
public Square(double side) {
super();
this.side = side;
}
public double getSide() {
return side;
}
public void setSide(double side) {
this.side = side;
}
@Override
public double area() {
// TODO Auto-generated method stub
return side*side;
}
@Override
public double girth() {
// TODO Auto-generated method stub
return 0;
}
}
Test.java
package com.graphics;
public class Test {
public static void main(String[] args){
//使用多态的形式实例化图形类
Graphics circle=new Circle(3.0);
Graphics square=new Square(4.0);
Graphics 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());
}
}
TestGraphs.java
package com.graphics;
public class TestGraphs {
public static void main(String[] args) {
// 实例化图形对象数组
Graphics[] graphics=new Graphics[10];
for(int i=0;i<3;i++){
Circle circle=new Circle(2.0+i);
graphics[i]=circle;
}
for(int i=3;i<7;i++){
Square s=new Square(3.0+i);
graphics[i]=s;
}
for(int i=7;i<10;i++){
Rectangle r=new Rectangle(3.0+i,4.0+i);
graphics[i]=r;
}
Graphics max=graphics[0];
for(int i=0;i<graphics.length;i++){
if(graphics[i].area()>max.area()){
max=graphics[i];
}
}
System.out.println(max.area());
}
}
Comparable.java
package com.graphics;
/**
*
* @ClassName: Comparable
* @Description:图形接口
* @author lye
* @date 2019年9月27日
*
*/
public interface Comparable {
public int compareTo(Graphics graphics);
}