Java多态四:为什么需要向上转型;为什么需要向下转型

时间:2024-03-27 08:02:22

1.向上转型:为什么需要向上转型

如方案1所示,当测试各个子类的eat()方法时,只需要写一个eatTest()方法即可,其会通过向上转型机制,决定去调用哪一个子类的eat方法。

Java多态四:为什么需要向上转型;为什么需要向下转型

但如果这样:

Java多态四:为什么需要向上转型;为什么需要向下转型

由上两个例子可以看到,采用向上转型的方案更加简单灵活。如后续再添加新的子类,也无需新增eatTest()方法。


2.向下转型:为什么需要向下转型

向下转型一般是为了重新获得因为向上转型而丢失的子类特性而存在;因此,通常在向下转型前常有向上转型,而向下转型通常也会结合instanceof一起使用;

借由向下转型,可以在灵活应用多态的基础上,同时兼顾子类的独有特征。