编写Java程序。

(1)使用继承机制,分别设计实现抽象类 图形类,子类类圆形类、正方形类、长方形类,要求:

①抽象类图形类中有属性包括画笔颜色(String类型)、图形是否填充(boolean类型:true表示填充,false表示不填充),

有方法获取图形面积、获取图形周长等;

②使用构造方法为其属性赋初值;

③在每个子类中都重写toString()方法,返回所有属性的信息;

④根据文字描述合理设计子类的其他属性和方法。

(2)设计实现画板类,要求:

①画一个红色、无填充、长和宽分别为10.0与5.0的长方形;

②画一个绿色、有填充、半径为3.0的圆形;

③画一个黄色、无填充、边长为4.0的正方形;

④分别求三个对象的面积和周长,并将每个对象的所有属性信息打印到控制台。

//抽象类 图形类
public abstract class Graphical {

private String colour;
private boolean fill;

public abstract double perimeter();
public abstract double area();
public abstract String toString() ;


public Graphical() {

}
public Graphical(String colour, boolean fill) {
this.colour = colour;
this.fill = fill;
}

public String getColour() {
return colour;
}

public void setColour(String colour) {
this.colour = colour;
}

public boolean isFill() {
return fill;
}

public void setFill(boolean fill) {
this.fill = fill;
}


}
//正方形类
public class Square extends Graphical{
private double side;

public Square(String colour, boolean fill, double side) {
super(colour, fill);
this.side = side;
}

public double getSide() {
return side;
}

public void setSide(double side) {
this.side = side;
}

public double perimeter() {
return 2*side;
}


public double area() {
return side*side;
}


public String toString() {
return "正方形的颜色为:"+getColour()+"\t有无填充:"+isFill()+"边长为:"+getSide()+"周长为:"+perimeter()+"面积为:"+area();
}
}
//长方形类
public class Rectangle extends Graphical{
private double length;
private double width;

public Rectangle(String colour, boolean fill, double length,double width) {
super(colour, fill);
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;
}

public double perimeter() {
return (length+width)*2;
}


public double area() {

return length*width;
}

@Override
public String toString() {
return "长方形的颜色为:"+getColour()+"\t有无填充:"+isFill()+"长为:"+getLength()+"宽为:"+getWidth()+"周长为:"+perimeter()+"面积为:"+area();
}
}
//子类 圆形类
public class Circular extends Graphical {
private double R;

public Circular(String colour, boolean fill, double r) {
super(colour, fill);
R = r;
}

public double getR() {
return R;
}

public void setR(double r) {
R = r;
}

public double perimeter() {
return R*2*3.14;
}


public double area() {
return R*R*3.14;
}



public String toString() {
return "圆的颜色为:" +getColour() +"\t"+"有无填充:" +isFill()+ "半径为:"+getR()+"的圆形面积为:"+area()+"周长为:"+perimeter() ;
}
}
//测试类
public class Text {
public static void main(String[] args) {
Circular circular=new Circular("绿色",true,3.0);
System.out.println(circular.toString());

Rectangle rectangle=new Rectangle("红色",false,10.0,5.0);
System.out.println(rectangle.toString());

Square square=new Square("黄色",false,4.0);
System.out.println(square.toString());
}
}