结构:
1. 局部变量表:一组变量值的存储空间,用于存放方法参数和方法内的局部变量,编译完成后大小确定,最基本的单位slot,而且slot可以进行重用,一旦某个变量超出其存在的域,其他变量可重用其内存
2. 操作数栈:操作栈(运算),局部变量表(存储)
3. 动态链接:
4. 方法返回地址:正常返回或者异常返回
5. 额外附加信息;
方法调用
方法调用不等于方法执行
静态解析(编译时确定):static,final,private,构造函数,父类函数
动态绑定(运行时确定):public
方法表
虚方法表存放着哥哥方法的实际入口:
如果方法没有被重写,入口地址和父类方法的入口地址一致
否则,子类方法入口地址指向子类方法
分派
静态分派(重载,类内方法)
动态分派(重写,父子类方法)
单分派:只能调用本类的方法
多分派:可调用本类和父类的方法
Java属于静态多分派,动态单分派:
重载能调用父类和子类的方法,重写只能调用子类的方法