【发布时间】:2021-06-05 08:44:52
【问题描述】:
假设有接口A和类B,类B实现了接口;
interface A {
void hello();
}
class B implements A {
public int justAField;
@Override
public void hello() {
System.out.println("Hi.");
}
public void anotherMethod() {
System.out.println("Another one.");
}
}
假设我们有这两个对象;
A typeInterface = new B();
B typeClass = new B();
我的问题是,当编译器编译代码并开始分配内存时,我们得到了两个对象,对吧?但是一个是A型,一个是B型,这意味着'typeInterface'将只有一个方法,而'typeClass'将包含一个字段和一个方法。
这两个对象是否分配相同数量的内存或'typeInterface'基本上消耗更少的内存?
【问题讨论】:
-
它们消耗的内存量完全相同:即对象引用占用的内存量加上
B类的对象消耗的内存量。 -
typeInterface和typeClass只是变量。它们指向内存中的对象。两者都指向 B 类的对象。因此正在消耗相同的内存。
标签: java oop memory-management interface jvm