a) 该类有一个Point的类型的私有属性center,表示shape的中心点坐标
b) 二个成员方法:double getArea()获取图形的面积,默认返回值为0,double getPerimeter() 获取图形的周长,默认返回值为0
2. 将Circle类改为继承自Shape类,删除原有的圆心属性, Shape类的center属性作为圆心,在此基础上修改原有的求两个圆的关系的方法,使其能够正常执行。
a) 重写Shape的getArea和getPerimer方法,以计算圆的周长和面积
b) 重写圆的toString方法,使得该方法能够显示圆心坐标和圆的半径
c) 重写圆的equals方法,当两个圆的圆心坐标相同,并且半径相同就认为两个圆相等
d) 重写hashCode方法,确保当equals方法为true时,hashCode值相等
e) 给每个圆定义编号属性,表明该圆是生成的第几个
f) 定义一个属性MIN_RADIUS,表示半径的最小值0.5(不可修改),当给半径赋值时,如果值小于该最小值,则将半径设为该最小值。
3. 定义一个长方形Rectangle类,该类继承自Shape类,
a) 该类有两个私有属性:width(宽),heighth(高)
b) 创建一个无参的构造方法,该方法创建一个中心在原点,宽高都为1的长方形
c) 创建一个有参的构造方法,该方法创建一个指定宽高和中心点的长方形
d) 重写父类的getArea和getPerimeter方法,计算长方形的周长和面积
e) 重写toString方法,使得该方法能显示长方形的宽、高和中心点坐标
4. 定义一个三角形Triangle类,该类继承自Shape类,
a) 该类有三个私有属性:a,b,c表示三角形的三个边
b) 定义一个无参构造方法,该方法创建一个三角形,中心点在原点,a,b,c的值都为1
c) 定义一个有参的构造方法,该方法创建一个指定边长和中心点的三角形
d) 重写父类的getArea和getPerimeter方法,计算三角形的周长和面积
e) 重写toString方法,使得该方法能显示三角形的三边和中心点坐标
5. 定义一个测试类TestShape,在main方法中定义一个Shape 变量shape,分别创建圆、长方形和三角形对象赋值给shape变量,赋值后通过调用shape的getArea,getPerimeter和toString方法,验证是否能正确计算不同图形的面积和周长。