Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2223090
  • 博文数量: 556
  • 博客积分: 11457
  • 博客等级: 上将
  • 技术积分: 5973
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-24 22:33
文章分类

全部博文(556)

文章存档

2013年(22)

2012年(74)

2011年(460)

分类: Java

2011-10-09 17:19:48

  1. package cn.itcast.abstractdemo;
  2. /**
  3.  * 继承层越高,类就更通用,并且更抽象,有些层中的基类非常通用,更适合于作为其他类的框架,而不适合于作为其他具体类
  4.  * 来使用其特定实例
  5.  * 所有的对象都是通过类来描述的,但是反过来却不是这样,并不是所有的类都是来描绘对象的,
  6.  * 如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
  7.  * 抽象类往往用来表征我们在对问题领域进行分析、设计中的得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。
  8.  * @author Tom
  9.  * 比如:我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体的概念,它们是不同的,
  10.  * 但是他,它们又都属于形状这样一个概念,形状这一概念在问题领域是不存在的,它就是一个抽象的概念。正是因为抽象的概念
  11.  * 在问题领域没有对应的具体概念,所以用表征抽象概念的抽象类是不能够实例化的。
  12.  */
  13.  /**
  14.   * 声明表示形状的抽象类Shape
  15.   */
  16.  abstract class Shape{
  17.      abstract void draw();
  18.      abstract void erase();
  19.  }
  20. /**
  21.  * 声明表示圆形的子类Circle
  22.  * @author Tom
  23.  *
  24.  */
  25.  class Circle extends Shape{
  26.      void draw(){
  27.          System.out.println("Circle.draw()");
  28.      }
  29.      void erase(){
  30.          System.out.println("Circle.erase()");
  31.      }
  32.  }

  33. /**
  34.  * 声明表示正方形的子类Square
  35.  * @author Tom
  36.  *
  37.  */

  38.  class Square extends Shape{
  39.      void draw(){
  40.          System.out.println("Square.draw()");
  41.      }
  42.      void erase(){
  43.          System.out.println("Square.erase()");
  44.      }
  45.  }

  46. /**
  47.  * 声明表示三角形的子类Triangle
  48.  * @author Tom
  49.  */
  50.  class Triangle extends Shape{
  51.      void draw(){
  52.             System.out.println("Triangle.draw()");
  53.         }
  54.         void erase(){
  55.             System.out.println("Triangle.erase()");
  56.         }
  57.  }

  58. public class Shapes {

  59.     /**
  60.      * @param args
  61.      */
  62.      public static Shape randShape(){
  63.          switch((int)(Math.random()*3))
  64.          {
  65.          default:
  66.          case 0: return new Circle();
  67.          case 1: return new Square();
  68.          case 2: return new Triangle();
  69.          }
  70.      }
  71.     
  72.     public static void main(String[] args) {
  73.         Shape[] s=new Shape[9];
  74.         for(int i=0;i<s.length;i++)
  75.         {
  76.          s[i]=randShape();
  77.          s[i].draw();
  78.          s[i].erase();
  79.          System.out.println("----------华丽的分割线--------------");
  80.         }
  81.     }
  82. }

参考资料

   《清华IT培训教材java系列》

阅读(1514) | 评论(0) | 转发(0) |
0

上一篇:SQL上机

下一篇:SQLServer2005安装问题

给主人留下些什么吧!~~