A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Johnny_Hu 中级黑马   /  2015-3-22 20:32  /  711 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. package com.Painter.Try;

  2. /*
  3. * 需求 有一个圆形和长方形
  4. * 都可以获取面积。对于面积如果出现非法的数值,视为是获取面积出现问题。
  5. * 问题通过异常来表示。
  6. * 现有对这个程序进行进本设计
  7. */

  8. public class TryDemo3 {

  9.         public static void main(String[] args)
  10.         {
  11.                 Rec rec = new Rec(5,6);
  12.                 rec.getArea();        
  13.                 Circle circle = new Circle(10);
  14.                 circle.getArea();
  15.         }

  16. }

  17. //自定义一个异常类 并继承RuntimeException
  18. class NoValueException extends RuntimeException
  19. {
  20.         //重载RuntimeException方法
  21.         NoValueException(String msg)
  22.         {
  23.                 super(msg);
  24.         }
  25. }

  26. //圆形跟长方形都有个共同点 面积 那么就把面积设为接口
  27. interface Shape
  28. {
  29.         public abstract void getArea();
  30. }

  31. class Rec implements Shape
  32. {
  33.         private int len,wid;
  34.         Rec(int len, int wid)
  35.         {
  36.                 if(len<=0 || wid<=0)
  37.                 {
  38.                         throw new NoValueException("非法值");//判断两个传入的参数是否为0或者为负数,否则抛出异常
  39.                 }
  40.                 this.len = len;
  41.                 this.wid = wid;
  42.         }
  43.         
  44.         public void getArea()
  45.         {
  46.                 System.out.println(len*wid);
  47.         }
  48. }
  49. class Circle implements Shape
  50. {
  51.         public static final double PI = 3.14;
  52.         private int radius;
  53.         Circle(int radius)
  54.         {
  55.                 if(radius<=0)
  56.                 {
  57.                         throw new NoValueException("非法值");//判断传入的参数是否为0或者为负数,否则抛出异常
  58.                 }
  59.                 this.radius = radius;
  60.         }
  61.         
  62.         public void getArea()
  63.         {
  64.                 System.out.println(radius*radius*PI);
  65.         }
  66. }
复制代码

还有还可以优化的代码  请多多指点  谢谢

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马