本帖最后由 留鹤村 于 2012-7-7 16:41 编辑
假设有一个类square(正方形),另有一个类 circle(圆);他们有各自的属性(求各自的面积,各自的边长)以及一些共有属性(颜色),将共有属性定义到一个类中figure(几何图形)。但是,在使用时,求圆的面积只能用circle类中的方法,求长方形的面积只能用square类中定义的方法。虽然在square和circle类中求面积的方法不同,但都有求面积的行为,所以,将求面积的行为进一步抽象,得到一个抽象方法:getArea(),figure类就成为抽象类,getArea()具体的实现在各自的类中定义。这样,通过多态和动态绑定,在以前需要circle.getArea()或square.getArea()的地方,只需要写成figure.getArea().
所以,抽象类的出现多是为了利用多态和动态绑定,实现通用程序设计。并且由于抽象类是对同一类对象的高度抽象,所以,在设计类时,抽象类一般是处于接近顶层的位置,对抽象类建立对象没有太大的意义,抽象类的非抽象数据可以通过继承得到。 |