我已经阅读了关于多态和继承的章节,并完成了我的Java书籍中的所有练习。但我仍然不明白为什么我需要在实践中使用向下转换。您能否举例说明您必须使用向下转型的工作或项目?
答案 0 :(得分:1)
假设您有一个基类,以及直接或间接从该基类派生的类。然后,只要该基类类型的对象被类型转换为派生类类型,它就被称为向下转换。您需要向下转换以使特定于实例。例如,让getobject()
成为返回Object
的方法,因为String
是Object
的子类,此方法也可能返回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)中无法完成。