在以下情形创建多个子对象是否也强制在java中创建多个父对象?
public class Parent1 { } public class Child1 extends Parent1 {} Child1 c1 = new Child1(); Child1 c2 = new Child1();
对象C1,C2也创造Parent1类的两个对象?
和你们可以请你告诉我我怎么能实时检查?
在此先感谢
在以下情形创建多个子对象是否也强制在java中创建多个父对象?
public class Parent1 { } public class Child1 extends Parent1 {} Child1 c1 = new Child1(); Child1 c2 = new Child1();
对象C1,C2也创造Parent1类的两个对象?
和你们可以请你告诉我我怎么能实时检查?
在此先感谢
当您创建子对象时,也会为父对象的成员分配内存。您可以通过在父类的构造函数中添加System.out.println来检查是否正在创建父对象。
它不会创建一个Parent1
,但在Parent1
也将在使用内存方面存在Child1
,所以任何领域,它几乎就像它一样,但事实并非如此。
子对象是父对象,所以是的,您创建了两个父对象:c1
和c2
。
这不是Java特有的,它是面向对象编程的基础。
如果您正确使用继承,那些*是*两个“父”。你可以在任何需要'Parent'的地方使用它们,它们甚至(部分)由'Parent'的构造函数构造。它们恰好是'Parent'的*子类*的实例......这就像有一只动物恰好是一只狗一样。 – cHao 2012-01-15 00:27:13
虽然这并不一定正确使用它。有这种行为的用例,但这并不是说它应该总是以这种方式使用。首要示例:您并不总是希望将'Collection'传递到您的方法中 - 因为您需要这些子类型的行为,所以通常希望将其限制为'Set '或'List '。 –
corsiKa
2012-01-15 01:38:28
当然有些时候你会想要专业化。但是如果你想要一个'Set'或者'List ',那么这就是你应该要求的。接受一个'Collection '然后将它投射到你真正想要的东西上,几乎总是做错事。但是List或Set *是-a *集合,那么集合的所有事情对于集合或列表都应该是真实的。 –
cHao
2012-01-16 06:18:24