2012-01-15 29 views

回答

3

当您创建子对象时,也会为父对象的成员分配内存。您可以通过在父类的构造函数中添加System.out.println来检查是否正在创建父对象。

3

它不会创建一个Parent1,但在Parent1也将在使用内存方面存在Child1,所以任何领域,它几乎就像一样,但事实并非如此。

+1

如果您正确使用继承,那些*是*两个“父”。你可以在任何需要'Parent'的地方使用它们,它们甚至(部分)由'Parent'的构造函数构造。它们恰好是'Parent'的*子类*的实例......这就像有一只动物恰好是一只狗一样。 – cHao 2012-01-15 00:27:13

+0

虽然这并不一定正确使用它。有这种行为的用例,但这并不是说它应该总是以这种方式使用。首要示例:您并不总是希望将'Collection '传递到您的方法中 - 因为您需要这些子类型的行为,所以通常希望将其限制为'Set '或'List '。 – corsiKa 2012-01-15 01:38:28

+0

当然有些时候你会想要专业化。但是如果你想要一个'Set '或者'List ',那么这就是你应该要求的。接受一个'Collection '然后将它投射到你真正想要的东西上,几乎总是做错事。但是List或Set *是-a *集合,那么集合的所有事情对于集合或列表都应该是真实的。 – cHao 2012-01-16 06:18:24

0

子对象父对象,所以是的,您创建了两个父对象:c1c2

这不是Java特有的,它是面向对象编程的基础。