【发布时间】:2014-02-04 14:19:35
【问题描述】:
我的同事刚刚问了我一个非常有趣的问题,我无法给他答案。
假设我们有以下类:
public class Person {
String name;
public Person(String name) {
this.name = name;
}
public void print() {
System.out.println("xxx");
}
}
现在,我们正在创建对象:
Person p1 = new Person("a");
Person p2 = new Person("b");
Person p3 = new Person("c");
Person p4 = new Person("d");
Person p5 = new Person("e");
Person p6 = new Person("f");
Person p7 = new Person("g");
Person p8 = new Person("h");
问题是:
我们是否在每个对象中保留有关可用方法的信息?如果我们创建一个新对象p9,JVM 会创建仅包含有关字段的信息的对象,还是会在此对象中添加有关方法的信息?
另一个问题:
如果我调用p1.print() 会发生什么? p1 是否必须要求 Person 类提供此方法,还是已经保存在 p1 对象中?
【问题讨论】:
-
@Vallentin 你会建议他用什么词谷歌?
-
@KevinWorkman 这个问题怎么样?
-
@Vallentin 实际上我觉得这个问题很有趣。请记住,Google 经常会找到 StackOverflow 问题作为答案。这个问题只需要问。但是,在那种情况下,SO 上有类似的问题,但关键是它是 QA 站点。
标签: java class object memory jvm