2014-02-06 28 views
2

这种情况: 我有父类PARENT。 延伸专利的几个类。JAVA内存使用扩展类

所以问题是:在内存中创建尽可能多的副本副本,因为有CHILDS。或者在内存中,所有CHILDS只有一个副本?

+0

请不要将其命名为'PARENT'。 – Maroun

+0

内存中没有父母...... – assylias

+0

也许我说的不好。每个孩子都复制PARENT的方法? – Edgar

回答

4

每个CHILD方法和每个PARENT方法等只有一个副本。每个CHILD对象都有其每个类的非静态字段,每个PARENT的非静态字段以及每个Object的非静态字段。

+0

所以如果我有方法DO()在父母和10个孩子扩展PARENT,所以在内存中,我将有10个方法DO()的副本? – Edgar

+1

对象的非静态字段? ;-) – assylias

+0

@Edgar否,您将拥有一个DO()副本,除非有一个或多个子类覆盖它,在这种情况下,每个覆盖子类都需要它自己的副本。 –

0

一个类的实例由其父项字段和它自己的字段组成。 B的

class A { 
    int a; 
} 

class B extends A { 
    int b; 
} 

实例是一个实例(不创建一个实例),其具有2个字段:整数a和INT b