A是父类,B是子类。 A a = new B(); 这是多态中的父类引用指向子类对象,可以调用子类中重写了父类的方法。
但我有一点不明白,既然调用重写了父类方法的子类,那么我直接创建一个子类的对象, 也可以达到相同的效果,那我为什么还要使用这样的向上转型呢?哪里又需要用到呢?
谢谢大家解惑。
收起
你说得是这样的,但是大多数情况下,我们写代码时,关联的都是上层抽象类型,即我们只关心拥有某个对象的上层类型,而不关心它具体是哪种类型,那么不管外界给我们哪种它的底层子类,都不影响我这个类的功能。这就是依赖抽象的好处,其实这是设计模式的思想,主要作用就是让我能更容易复用和维护代码,等你写代码久了,接触的多了,就会逐渐体会这样依赖上层的优势了。
报告相同问题?