本帖最后由 冯越 于 2012-5-16 12:08 编辑
首先,我们来看一下抽象类的概念,java编程思想中说“万物皆对象”,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类是表征我们对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。好比,我们都知道三角形是一个形状,世界上有三角形这样具体的东西,但是确没有形状这样具体的东西,我们要描述这个形状的概念就要用到抽象类。因此在java中抽象类是不允许被实例化的。
抽象类即是不能被实例化的类,而且你不能够在自己的程序里通过这种类来生成一个对象。 你也许会认为不能被实例化的类是没多大用处的。事实上,在某些环境下, 抽象类是非常有用的。你可以把它作为一个基础类以此为基类创建新的类。 在对功能要求不高的环境下生成的类,会向你提供一个规定的启始点,通过这个点你可以推导出非抽象类。在此假设一个要用抽象类的程序设计。假设图形程序提供了大量的drawing类:比如圆,三角,曲线等等。所有这些作drawing类都有某个共同的特性,比如位置,大小,色彩,删除等属性。其它的类成员,比如描绘图形的方法就不同于每个单独的类。因此,这样为利用抽象类创造了一个理想的环境 。我们就可以创建一个叫 形状 的抽象类。在里面定义一些那些类属于形状的公有特性。以后我们如果要创建圆,三角啊什么的时候,我们就可以直接继承这个抽象类了。然后再根据我们具体的类型去具体实现方法。那些公有的东西我们就不需要在写了。这在很大程度上避免了代码的冗余。 |