- /*需求:用户输入长和宽,半径,可求出对象长方形和圆形的面积,当用户输入非法值(0,负数)时程序停止
- 分析:
- 1.长方形和圆形是两个图形,定义两个类,用于建立图形对象,每个对象初始化都有自己的参数,
- 2.因为不同的图形计算面积的公式不同,但功能相同(计算面积),因此可以建议一个接口用于扩展功能
- 3.自定义异常:当图形的参数非正时,图形无法建立,则程序停止运行
- */
- class NoValueException extends RuntimeException
- {
- NoValueException(String msg)
- {
- super(msg);
- }
- }
- //建立接口,实现求面积的扩展功能
- interface Shape
- {
- void getArea(); //抽象方法
- }
- //建立长方形类
- class Rec implements Shape
- {
- private double len;
- private double wid;
- Rec(double len,double wid)
- {
- if (len<=0 || wid <=0)
- throw new NoValueException("非法参数");
- this.len = len;
- this.wid = wid;
- }
- public void getArea()
- {
- System.out.println(len * wid);
- }
- }
- //建立圆形类
- class Cir implements Shape
- {
- private double rad;
- public static final double PI = 3.14;
- Cir(double rad)
- {
- if (rad<=0)
- throw new NoValueException("非法参数");
- this.rad = rad;
- }
- public void getArea()
- {
- System.out.println(rad*rad*PI);
- }
- }
- class AreaTest
- {
- public static void main(String[] args)
- {
- Rec r = new Rec(7,7);
- r.getArea();
- Cir c = new Cir(9);
- c.getArea();
- }
- }
复制代码 |
|