父obj =新Child();合理?

时间:2012-02-06 16:58:56

标签: java inheritance

在Java中:

Parent obj = new Child();

我创建了一个Parent类型的对象。我假设我只能调用Parent类中定义的方法。因此,我无法调用Child中定义的“附加”方法或Child中定义的访问变量。 所以我认为这是浪费内存,因为我新增了一个Child的实例,它占用了比Parent更多的内存空间。到目前为止,我认为这没有意义。 任何人都可以给出一些理由/例子吗?

3 个答案:

答案 0 :(得分:4)

是的,确实有意义。

如果你想使用一个Child,你会这样做,但是限制你与Parent方法的交互。

这个习惯用法在Java集合中特别常见:

List<String> myList = new ArrayList<String>();

答案 1 :(得分:2)

是的,它是多态和继承编程概念的一部分。

答案 2 :(得分:1)

这个习惯用于支持改变具体实现。根据有效Java中的Joshua Bloch(第52项)

  

如果你习惯使用接口作为类型,你的程序会更加灵活。如果你决定要切换实现,你所要做的就是改变构造函数中的类名(或者使用一个不同的静态工厂)