简单的讲就是,每个类(Class对象)加载进内存,会在方法区生成包含方法各种信息的数据结构,并在堆区生成一个java.lang.Class对象,作为访问方法区数据的入口。每个类对象都有一个方法表,里面存放了方法签名等信息,如果子父类含有同样的方法,那么它们在方法区的索引位置会是一样的,如果是接口和接口实现类位置就不一样了。所以,如果是父类作为子类的引用,那么在类解析阶段其实就获得了父方法签名的索引位置,在真正创建对象时,通过指向真正对象的指针从而找到对象的方法表,并根据偏移位置确定调用方法,如果之类方法不存在,往父类上去找。接口和子父类稍有不同,接口会扫描这个方法表找到方法的索引。
点赞 评论

相关推荐

迷茫的大四🐶:自信一点,我认为你可以拿到50k,低于50k完全配不上你的能力,兄弟,不要被他们骗了,你可以的
点赞 评论 收藏
分享
心中的变压器:简历需要突出重点
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-10 15:24
高考前一晚在OPPO手机上设置了早上5:30的闹钟,然而闹钟并未按时响起。直到妈妈做好早餐后,在6:27打开手机才发现闹钟未触发,“气得早上饭都没吃”。资本家你赢了
永不遗忘:我来解释一下 :Oppo 手机晚上两点会自动进行系统更新,这个系统更新会重置掉所有设置好的闹钟,而且他也不会告诉你,而且只有 Oppo 会这样,华为苹果小米三星都不会
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务