子类当父类用的,父类变量可以接收其子类对象,而不仅仅局限于自己的对象。父类有的子类也有,比直接用父类更强大。
向上转型主要是为了让子类当父类用。子类用子类是可以。
通常一个父类有多个子类,而这些子类拥有很多相同的方法,但它们的特性有些差别,比如ArrayList和LinkedList,同时List接口的子类。ArrayList是数组结构,查找快,增删慢;LinkedList是链表结构,查找慢,增删快。在数据量不大的时候,用哪个都无所谓。当数据量上万的时候就要考虑用哪一个了,这取决于查得多还是增删得多。举个例子,在成绩查询系统中,用ArrayList较好,因为输入一次,可能被查很多次。
如果你是直接把子类当子类用,那么当你要修改ArrayList为LinkedList,得费一番功夫,维护成本大。Java这样,更简化了程序员的工作,这是Java的一贯追求。
用父类变量来引用子类对象,不论实际类型是哪个,其方法名一样,也就不用频繁更改。除非用到一些父类没有的特性时才不这样做。
而且只有父类中声明的方法,才能调用,即父类不能调用子类的特有方法。如果方法在子类中被重写,将调用子类的方法。
|