Если каждый объект имеет другую копию переменных экземпляра, где методы «живут»?Где методы «живут»?
В качестве примера:
class A {
public foo() {
System.out.println("foo");
}
}
class B extends A {
public foo() {
System.out.println("foofoo");
}
}
public class Main {
public static void main(String[] args) {
A a = new B();
a.foo(); // "foofoo"
}
}
Я знаю, что "foofoo" печатается. Итак, методы, связанные с объектами или что-то еще?
Из-за сходства с вопросом, который я задал на другом языке, я собираюсь связать свой вопрос здесь. Разница между flash и java заключается в том, что flash - это прототип, основанный на языке, который может иметь метод, превосходящий происходящее во время выполнения, поэтому мой вопрос отличается. http://stackoverflow.com/questions/3783256/as2-are-functions-declared-in-a-class-stored-as-separate-instances-taking-up-mor – M2tM
Со времен экономического центра значительная часть методов оставил свои обычные таблицы для чего-то менее гламурного, виртуального vtables –