向下转型的实际用途

时间:2013-04-21 14:00:42

标签: oop downcast

我已经阅读了关于多态和继承的章节,并完成了我的Java书籍中的所有练习。但我仍然不明白为什么我需要在实践中使用向下转换。您能否举例说明您必须使用向下转型的工作或项目?

1 个答案:

答案 0 :(得分:1)

假设您有一个基类,以及直接或间接从该基类派生的类。然后,只要该基类类型的对象被类型转换为派生类类型,它就被称为向下转换。您需要向下转换以使特定于实例。例如,让getobject()成为返回Object的方法,因为StringObject的子类,此方法也可能返回String

案例(i):

Object o = getObject();

在这里,您已将方法返回的对象分配给Object引用变量。因此,您只能调用实例Object上的o类中定义的方法。

案例(ii):

Object o = getObject();
if(o instanceof String)
  String s = (String)o;

此处,如果getobject()实际上已返回String个实例,那么您将其向下转发到String。这样做的好处是,您可以调用String s中定义的方法,这些方法在Case(i)中无法完成。