黑马程序员技术交流社区

标题: 异常练习,类为何无法覆写接口Inner的方法 [打印本页]

作者: 我只是一只菜鸟    时间: 2014-12-19 18:49
标题: 异常练习,类为何无法覆写接口Inner的方法

  1. /*
  2. 异常小练习:
  3. 需求:
  4. 有一个圆形和长方形。
  5. 都可以获取面积,对于面积如果出现非法的数值,视为是面积出现问题。

  6. 思路:
  7. 1.都要实现面积方法,且实现方式不同,
  8. 2.自定义一个异常类用于检测面积出现问题
  9. */

  10. /*异常面积类:*/

  11. class AreaCountException extends Exception
  12. {
  13.         AreaCountException(String str)
  14.         {
  15.                 super(str);
  16.         }
  17. }
  18. //面积接口
  19. interface Inner
  20. {
  21.          double getArea();
  22. }
  23. //圆类
  24. class Circle implements Inner
  25. {
  26.         public static final double PI=3.14;
  27.         private double r;
  28.         Circle(double r)
  29.         {
  30.                 this.r=r;
  31.         }

  32.         public double getArea() throws AreaCountException
  33.         {
  34.                 if(r>0)
  35.                 return (PI*r*r);
  36.                 else throw new AreaCountException("面积小于0");
  37.         }
  38. }

  39. //长方形类
  40. class Rectangles implements Inner
  41. {
  42.         private double width;
  43.         private double longth;
  44.         Rectangles(double width,double longth)
  45.         {
  46.                 this.width=width;
  47.                 this.longth=longth;
  48.         }

  49.         public double getArea() throws AreaCountException
  50.         {
  51.                 if(width>0&&longth>0)
  52.                         return (width*longth);
  53.                 else
  54.                         throw new AreaCountException("面积小于0");
  55.         }

  56. }

  57. class  AreaException
  58. {
  59.         public static void main(String[] args)
  60.         {
  61.                 Circle cir=new Circle(-3.2);
  62.                 Rectangles rec=new Rectangles(4.2,-3);
  63.                 try
  64.                 {
  65.                         System.out.println("circle area="+cir.area());
  66.                 }
  67.                 catch (AreaCountException e)
  68.                 {
  69.                         System.out.println(e.toString());
  70.                         System.out.println("circle areaCountException");

  71.                 }

  72.                 try
  73.                 {
  74.                         System.out.println("rectangle area="+rec.area());
  75.                 }
  76.                 catch (AreaCountException e)
  77.                 {
  78.                         System.out.println(e.toString());
  79.                         System.out.println("rectangle areaCountException");
  80.                 }

  81.         }
  82. }
复制代码



作者: 我只是一只菜鸟    时间: 2014-12-19 18:50
错误提示如下:

1219.jpg (75.65 KB, 下载次数: 26)

1219.jpg

作者: sweet凌风    时间: 2014-12-19 19:22
表示,异常处理好像很简单,就那固定的语法
作者: jxlovqqvo    时间: 2014-12-19 21:48
既然你的实现类要抛异常,那么接口定义也必须抛异常
作者: 提米特    时间: 2014-12-19 22:39
我测试了一下,第74行和85的方法写错了,应该是getArea();

另外你提到的为什么不能复写接口的方法,是因为你的实现方法抛了异常,接口里面也必须要抛异常。
作者: 我只是一只菜鸟    时间: 2014-12-19 22:59
提米特 发表于 2014-12-19 22:39
我测试了一下,第74行和85的方法写错了,应该是getArea();

另外你提到的为什么不能复写接口的方法,是因为 ...

了解,多谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2