问题:定义一个抽象类Shpae表示形状,给定颜色属性String color,提供一个不带参数的构造方法和一个带参数的构造方法,完成对属性的赋值,提供一个计算面积的抽象方法area()。定义一个类Circle表示圆形,继承于Shape,给定专有属性半径double r,提供两个构造方法。定义一个类Rectangle表示矩形,继承于Shpae,给定专有属性长length、宽width ,提供两个构造方法。定义一个测试类TestShape,完成圆、矩形对象的创建和面积的计算。

• 3-1
/*1.定义一个抽象类Shpae表示形状,给定颜色属性String color,
 * 提供一个不带参数的构造方法和一个带参数的构造方法,完成对属性的赋值,
 * 提供一个计算面积的抽象方法area()。定义一个类Circle表示圆形,
 * 继承于Shape,给定专有属性半径double r,提供两个构造方法。
 * 定义一个类Rectangle表示矩形,继承于Shpae,给定专有属性长length、宽width ,
 * 提供两个构造方法。定义一个测试类TestShape,完成圆、矩形对象的创建和面积的计算。*/
package zy;
/**
 * @author  */
public class TestShape {
 public static void drawShape(MakeShape s){
     s.draw();
    }
public static void main(String[] args) {
MakeShape s=new Circle();
TestShape.drawShape(s);
TestShape.drawShape(new Rectangle());
}
}
package suanfa;

import java.awt.geom.RectangularShape;
import java.util.Scanner;

/**
 * 1.定义一个抽象类Shpae表示形状,给定颜色属性String color
 * ,提供一个不带参数的构造方法和一个带参数的构造方法,完成对属性的赋值,
 * 提供一个计算面积的抽象方法area()。定义一个类Circle表示圆形,
 * 继承于Shape,给定专有属性半径double r,提供两个构造方法。
 * 定义一个类Rectangle表示矩形,继承于Shpae,
 * 给定专有属性长length、宽width ,提供两个构造方法
 * 。定义一个测试类TestShape,完成圆、矩形对象的创建和面积的计算。
 *
 */
abstract class Shape{
protected String color;
//不带参数的构造函数
public Shape() {
super();
}
//带参数的构造函数
public Shape(String color) {
super();
this.color = color;
}
//计算面积的抽象方法
public abstract double area();
//定义一个圆,继承于形状
class Circle extends Shape{
//专有属性半径
private double r;
//提供两个构造方法。
        public Circle(double r) {
super();
this.r = r;
}
public Circle() {
r=1.0;
}
public  double area(){
return 3.14*r*r;
}
//定义一个类Rectangle表示矩形,继承于Shpae,
class Rectangle extends Shape{
//定专有属性长length、宽width
private double length;
private double width;
//提供两个构造方法。
public Rectangle(double length, double width) {
super();
this.length = length;
this.width = width;
}
public Rectangle() {
super();
}
public  double area(){
return width*width;
}

}

}
public class Test{
public  void drawShape(MakeShape s){
s.draw();}
}
public void main(String[] args) {
// TODO 自动生成的方法存根
MakeShape s=new Circle();
Test.drawShape(s);
Test.drawShape(new  Rectangle());
}
}