日期:2014-05-20  浏览次数:20744 次

JAVA中如何使用抽象类?让我困惑的问题,麻烦知道的朋友帮我解释下
这是在软设2009年上半年下午题中出现的代码题(摘要):
abstract class Image {...} //定义了一个抽象类Image
class BMP extends Image{...} //抽象类的子类,已具体化其中的抽象方法
public class javaMain{ //主函数
  Image image1 = new BMP(); //实例化对象 ##问题所在##
  image1.xxx();
}
问题:上面代码中实例化对象的代码是 Image image1 = new BMP(),其中Image是抽象类,BMP是普通类,请问Java中都是这么使用抽象类的吗?为什么不直接用BMP image1 = new BMP()呢?或者这两种方式是等效的?
由于我没怎么学过java,且抽象类也没怎么用过,所以有些疑惑,渴望得到解答,谢谢!

------解决方案--------------------
首先,题目中有一个抽象类Image,也就是BMP的一个父类, 如果同时我存在一个JPG也继承了抽象类Image,那么当我访问的图片信息不是BMP而是JPG的时候,我只需要把image1重新赋值为new JPG(),不用修改其他地方的代码。

在Java多态中,讲到了这样的问题,还有向上转型与向下转型。建议LZ有时间看一下Java基础。